我正在尝试测量glTexSubImage2D()的性能。我需要在渲染之前定期更新纹理1920x1080。奇怪的是,glTexSubImage2D()有时需要不到20ms,但有时需要190ms。我的度量日志的片段是:22,94,21,94,22,93,22,94,36,24,98,21,94,108,121,30,
当更新完整的RGBA纹理时,上面的那些是glTexSubImage2D()消耗的毫秒数。很明显,我无法将其用于实时视频渲染。
我在嵌入式OpenGLES2 ROCK64 ARM板上进行了实验,并启用了Mali450 GPU。
关于Raspberry PI 3 OpenGL ES2是特定的,但glTexSubImage2D也不是很快。那么问为什么它这么慢?是否有可能以某种方式以更快的方式更新纹理?
通常情况下,OpenGL会在使用您尝试使用的纹理渲染帧时停止CPU。
典型的解决方案是使用一对纹理。当GPU忙于从texture1渲染时,您可以使用下一帧的数据更新texture2。完成框架后,交换纹理,因此GPU锁定texture2,同时更新texture1。