我有一个图形引擎,每帧写入大约300字节的数据
大约六次glTexSubImage2D
调用纹理(包括写入mipmap)。
纹理是使用GL_RED
和GL_R8
作为格式\内部格式的无符号字节纹理。
上传是通过像素缓冲区执行的,该缓冲区本身已被写入前一帧。
这个非常小的操作会对帧速率产生深远的影响,无论其他画面是什么。
任何人都知道造成这种帧速率下降的原因,以及我如何能够超越它?
更新的 Solidpixels答案表明它是同步问题。在这种情况下,即使纹理修改与渲染完全不同步,我也会非常好。我是否可以告诉gles只是将数据直接写入纹理存储器中而不关心是否只有一半的新数据存在?
注意:的
仅glTexSubImage2D
会影响帧速率,glSubBufferData
上传根本不会影响。
在某些设备上,当我使用纹理绘制时实际执行glTexSubImage2D
时,它似乎很糟糕,而不是所有设备。
答案 0 :(得分:1)
我猜测那些速度慢的设备仍然会对飞行中的纹理有很好的参考,所以你强迫驱动程序创建一个鬼分配。在这里深入解释: