为什么glTexSubImage2D这么慢?

问题描述 投票:0回答:1

我正在尝试测量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也不是很快。那么问为什么它这么慢?是否有可能以某种方式以更快的方式更新纹理?

performance textures opengl-es-2.0
1个回答
0
投票

通常情况下,OpenGL会在使用您尝试使用的纹理渲染帧时停止CPU。

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

© www.soinside.com 2019 - 2024. All rights reserved.