我需要在每一帧更新一个纹理的纹理数据。有什么方法可以非常快地做到这一点?对我来说最好的选择是与 GL_APPLE_client_storage 类似的东西,但 iOS 不支持。显而易见的解决方案是每帧调用 glTexImage2D ,但这会复制数据,而且我必须在内存中保留相同的纹理 2 次。
问问题
1198 次
2 回答
0
也许你应该使用glTexSubImage2D
更新纹理。看这里
于 2013-06-13T04:10:34.473 回答
0
纹理缓存(在 iOS 5.0 中添加)提供与GL_APPLE_client_storage
iOS 相同的功能。在最初创建时,它们似乎确实触发glTexImage2D()
了GL_APPLE_client_storage
.
它们在处理相机帧时提供了特殊的性能提升,因为 AV Foundation 针对这种情况进行了优化。我在相机的这个答案中详细描述了它是如何工作的。对于原始数据,您可以创建自己的 CVPixelBufferRef 用于此,然后写入其内部内容以直接更新纹理。
您必须对此小心一点,因为您可能会在渲染场景时覆盖纹理数据,从而导致撕裂和其他伪影。
于 2013-03-02T17:32:53.853 回答