[英]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.