这两个功能有什么区别?有什么性能差异吗?
谢谢..
您使用创建纹理glTexImage
,然后使用更新其内容glTexSubImage
。当你更新纹理时,你可以更新整个纹理,或者只是它的一个子矩形。
创建一个纹理并更新它比创建它并重复删除它要高效得多,因此从这个意义上说,如果您有要更新的纹理,请始终使用glTexSubImage
(在初始创建之后)。
其他技术可能适用于纹理更新。例如,请参阅这篇关于纹理流的文章以获取更多信息。
(最初,这篇文章建议使用glMapBuffer
纹理更新 - 请参阅下面的讨论。)
名称中带有“sub”的 gl 函数不限于二维的幂。正如 gavinb 指出的那样,您需要使用一次非子变体来设置整体尺寸,但我不同意重复调用非子变体比使用“子”进行更新要慢 - GPU 是只要您使用相同的纹理 ID,仍然可以自由覆盖现有的纹理。