2017-10-05 234 views
0

我有一个图形引擎,其中每帧写约300字节的数据 约六个glTexSubImage2D调用纹理(包括写入mipmap)。 纹理是使用GL_REDGL_R8作为格式\内部格式的无符号字节纹理。 上传是通过一个像素缓冲区执行的,该缓冲区本身已被写入前一帧。glTexSubImage2D深深地影响帧率3.0

这个相当小的操作对帧速率有深刻的影响,而不管绘制什么样的图形。

任何人都知道是什么导致此帧速率下降,以及我怎么能通过它?

更新: Solidpixels answer表示这是一个同步问题。在这种情况下,即使纹理修改与渲染完全不同步,我也会非常好。如果仅仅只有一半的新数据在那里,我能否直接将数据直接写入纹理存储器而不关心它?

注: 只有影响的帧速率glTexSubImage2D,在glSubBufferData上传不影响的。 在某些设备上,当我使用纹理绘制时,实际上执行glTexSubImage2D时,它看起来很棒,但不是所有设备。

+0

“可以......只写数据直入纹理内存不同步”?没有我知道的纹理的方法,只有缓冲区。 – solidpixel

+0

是的,似乎是可能的纹理缓冲区可用gles 3.2,或当然vulkan :( –

回答