簡體   English   中英

OpenGL / OpenGL ES更新紋理

[英]OpenGL/OpenGL ES update texture

我需要從紋理中更改部件,但要注意當前的紋理數據而不是僅僅替換它。

我嘗試使用glTexSubImage2D ,但是它取代了當前的數據,卻沒有讓我能夠在當前數據和新數據之間指定某種操作。

一個解決方案是在內存中緩存紋理數據並在使用glTexSubImage2D之前進行混合操作並使用glTexSubImage2D結果,但這只會浪費內存......

桌面OpenGL和OpenGL ES 2.0是否有任何共同的功能可以讓我這樣做?

當然glTexSubImage2D覆蓋以前的所有數據並且在CPU上執行它根本不是一個選項(它不僅會浪費內存,更重要的是浪費時間)。

你可以做的是使用幀緩沖對象(FBO) 將目標紋理作為FBO的顏色渲染目標附加,然后通過渲染紋理四邊形在其上方渲染新數據。 可以通過視口設置或四邊形大小和位置來調整子區域。 對於實際操作,您可以使用現有的OpenGL混合功能(如果足夠的話),或者使用自定義片段着色器(但在這種情況下,您不能只在舊的數據上渲染新數據,但必須使用將新舊數據作為紋理並將其渲染為全新的紋理,否則您無法訪問着色器內的舊數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM