Q
在OpenGL
9
A
回答
18
您創建使用glTexImage
紋理,然後更新與glTexSubImage
內容。當你更新紋理時,你可以更新整個紋理,或者只是一個子矩形。
創建一個紋理並更新它比創建並重復刪除它效率高得多,因此從這個意義上說,如果您有要更新的紋理,請始終使用glTexSubImage
(在初始創建後)。
其他技術可以應用於紋理的更新。例如,有關詳細信息,請參閱texture streaming上的這篇文章。
(原文使用glMapBuffer
紋理更新這個帖子建議 - 見下面的討論。)
1
名稱中的「子」的GL功能不限於功率爲2的尺寸。正如gavinb指出的那樣,您需要使用一次非子變量來設置整體尺寸,但我不同意重複調用非子變量比使用「sub」更新要慢 - GPU是隻要您使用相同的紋理ID,仍然可以自由覆蓋現有紋理。
+0
好吧,它_can_,但會嗎?至少,它需要驗證TexImage的所有參數是否與先前的參數兼容,以確定分配是否正確。指出,這不是SubTexture的問題。而且,兩者的力量並不相關,因爲現在需要在GL中支持NPOT紋理。 – Bahbar 2010-03-09 08:08:41
相關問題
- 1. OpenGL的:在使用OpenGL
- 2. iPhone的OpenGL-ES:在OpenGL UISwipeGestureRecognizer
- 3. 在OpenGL
- 4. 在OpenGL
- 5. 在OpenGL
- 6. 在OpenGL
- 7. 在OpenGL
- 8. 在OpenGL
- 9. OpenGL或OpenGL ES
- 10. OpenGL VBO在Haskell
- 11. 通過在OpenGL
- 12. 用OpenGL在Android
- 13. 字體在OpenGL
- 14. Colorozing在OpenGL
- 15. 在OpenGL 3+
- 16. 重疊在OpenGL
- 17. OpenGL或在Android
- 18. 在OpenGL ES
- 19. 呈現在OpenGL
- 20. 在OpenGL ES
- 21. 呈現在OpenGL
- 22. 在opengl- C++
- 23. 旋轉在OpenGL
- 24. 幫助在OpenGL
- 25. glewInit()在OpenGL中
- 26. 模型在OpenGL
- 27. 如何在OpenGL
- 28. 扭捏在OpenGL
- 29. 毛刺在OpenGL
- 30. OpenGL到OpenGL-ES - glRectf()
+1,但我不同意你的最後一句話同意。你通常不能映射紋理。無論如何,它們傾向於以非線性格式存儲在GPU端。所以......如果你在調用SubTexture之前自己上傳(到緩衝區對象),你可以強制GPU在卡上進行復制/調整。不一定是淨勝。 – Bahbar 2010-03-09 08:05:55
@Bahbar這非常有趣。那麼從主內存中的圖像數據更新紋理的最快方法是什麼?只需直接調用'glTexSubImage2D'? IIRC這是我推薦'glMapBuffer'做DMA傳輸的書籍之一。 – gavinb 2010-03-09 12:37:20
我以爲你用glTexImage創建紋理,而不是glTexSubImage。 – genpfault 2010-03-09 16:49:32