2

我需要在每一帧更新一个纹理的纹理数据。有什么方法可以非常快地做到这一点?对我来说最好的选择是与 GL_APPLE_client_storage 类似的东西,但 iOS 不支持。显而易见的解决方案是每帧调用 glTexImage2D ,但这会复制数据,而且我必须在内存中保留相同的纹理 2 次。

4

2 回答 2

0

也许你应该使用glTexSubImage2D更新纹理。看这里

于 2013-06-13T04:10:34.473 回答
0

纹理缓存(在 iOS 5.0 中添加)提供与GL_APPLE_client_storageiOS 相同的功能。在最初创建时,它们似乎确实触发glTexImage2D()GL_APPLE_client_storage.

它们在处理相机帧时提供了特殊的性能提升,因为 AV Foundation 针对这种情况进行了优化。我在相机的这个答案中详细描述了它是如何工作的。对于原始数据,您可以创建自己的 CVPixelBufferRef 用于此,然后写入其内部内容以直接更新纹理。

您必须对此小心一点,因为您可能会在渲染场景时覆盖纹理数据,从而导致撕裂和其他伪影。

于 2013-03-02T17:32:53.853 回答