为什么glTexSubImage2D这么慢?

时间:2019-02-07 07:10:43

标签: performance textures opengl-es-2.0

我正在尝试测量glTexSubImage2D()的性能。 渲染之前,我需要定期更新纹理1920x1080。 奇怪的是,有时glTexSubImage2D()花费不到20毫秒,但有时却需要190毫秒。 我的测量日志的片段是: 22 94, 21岁 94, 22 93, 22 94, 36岁 24 98, 21岁 94, 108, 121, 30,

以上是更新完整RGBA纹理时glTexSubImage2D()消耗的毫秒数。 很明显,我不能将其用于实时视频渲染。

我在启用Mali450 GPU的嵌入式OpenGLES2 ROCK64 ARM板上进行实验。

在Raspberry PI3上,OpenGLES2是特定的,但glTexSubImage2D也不是很快。那么问为什么它这么慢?是否可以以不同的方式更快地更新纹理?

1 个答案:

答案 0 :(得分:0)

通常情况下,当使用您要尝试添加的纹理渲染帧时,OpenGL会使CPU停顿。

典型的解决方案是使用一对纹理。当GPU忙于从texture1进行渲染时,您可以使用下一帧的数据更新texture2。框架完成后,您交换纹理,因此GPU锁定了Texture2,同时更新了Texture1。