这两个功能有什么区别? 任何表现差异?
谢谢..
答案 0 :(得分:20)
使用glTexImage
创建纹理,然后使用glTexSubImage
更新其内容。更新纹理时,可以更新整个纹理,或仅更新它的子矩形。
创建一个纹理并更新它比创建它并重复删除效率要高得多,所以在这种意义上,如果你想要更新纹理,请始终使用glTexSubImage
(在初始之后)创建)。
其他技术可适用于纹理更新。例如,有关详细信息,请参阅texture streaming上的这篇文章。
(最初,这篇文章建议使用glMapBuffer
进行纹理更新 - 请参阅下面的讨论。)
答案 1 :(得分:1)
名称中带“sub”的gl函数不限于2次幂。正如gavinb指出的那样,你需要使用一次非子变量来设置整体尺寸,但我不同意重复调用非子变体比使用“sub”进行更新要慢 - GPU是只要您使用相同的纹理ID,就可以自由覆盖现有纹理。