在RenderToTexture上下文中,涉及多個着色器,我需要CPU訪問其中一個最終呈現目標。使用glGetTexImage
很好,不幸的是它將所有紋理數據複製到客戶端內存。RTT到TEXTURE_BUFFER
爲了避免這個副本,我試圖用TEXTURE_BUFFER
到implemnet一個RTT,因此單獨的緩衝區對象連接到一個紋理,使用紋理渲染的部分,然後簡單地使用glMapBuffer
映射紋理的數據存儲並使其可供CPU訪問。
除了代碼之外,我想問一下這樣的策略是否可能是正確的(沒有什麼比我更好的了)或者違背了任何規範。
我有很多關於TBO的文檔作爲設置紋理的方法,但沒有關於使用TBOs讀取RTT的結果。我只是想知道,我想要做什麼是不合法的。
爲什麼需要將內容下載到系統內存?也許你可以在GPU上完成這項工作?映射緩衝區通常也會複製。 https://www.opengl.org/wiki/Buffer_Object#Mapping – fen
Im實際上試圖避免複製到系統內存。映射緩衝區對象通常可以解決而不涉及任何複製。不,不能在GPU上工作 – user815129
你也可以看看像素緩衝區對象http://www.songho.ca/opengl/gl_pbo.html,https://www.opengl.org/wiki/Pixel_Buffer_Object – fen