glTexSubImage2D深深地影响帧率3.0
问题描述:
我有一个图形引擎,其中每帧写约300字节的数据 约六个glTexSubImage2D
调用纹理(包括写入mipmap)。 纹理是使用GL_RED
和GL_R8
作为格式\内部格式的无符号字节纹理。 上传是通过一个像素缓冲区执行的,该缓冲区本身已被写入前一帧。glTexSubImage2D深深地影响帧率3.0
这个相当小的操作对帧速率有深刻的影响,而不管绘制什么样的图形。
任何人都知道是什么导致此帧速率下降,以及我怎么能通过它?
更新: Solidpixels answer表示这是一个同步问题。在这种情况下,即使纹理修改与渲染完全不同步,我也会非常好。如果仅仅只有一半的新数据在那里,我能否直接将数据直接写入纹理存储器而不关心它?
注: 只有影响的帧速率glTexSubImage2D
,在glSubBufferData
上传不影响的。 在某些设备上,当我使用纹理绘制时,实际上执行glTexSubImage2D
时,它看起来很棒,但不是所有设备。
答
我猜想在减速的设备上,您仍然对飞行中的纹理有着出色的参考,因此您会迫使驱动程序创建一个幽灵分配。在深入解释一下:
+0
感谢您的链接,我觉得这是管道的东西。 –
“可以......只写数据直入纹理内存不同步”?没有我知道的纹理的方法,只有缓冲区。 – solidpixel
是的,似乎是可能的纹理缓冲区可用gles 3.2,或当然vulkan :( –