代码之家  ›  专栏  ›  技术社区  ›  Viktor Sehr

glTexSubImage2D对gles 3.0上的帧速率有很大影响

  •  0
  • Viktor Sehr  · 技术社区  · 8 年前

    我有一个图形引擎,每帧写大约300字节的数据 glTexSubImage2D 调用纹理(包括写入mipmaps)。 纹理是使用 GL_RED GL_R8 作为格式\内部格式。 上传通过像素缓冲区执行,像素缓冲区本身已写入前一帧。

    有谁知道是什么导致了帧速率下降,以及我如何克服它?

    更新: Solidpixels的答案表明这是一个同步问题。在这种情况下,即使纹理修改与渲染完全不同步,我也会做得很好。我可以告诉gles直接将数据写入纹理内存,而不管是否只有一半的新数据存在吗?

    注: glTexSubImage2D 这会影响帧速率 glSubBufferData 上传一点也不影响。 在某些设备上,当我实际执行 glTexSubImage2D 当我使用纹理绘制时,并不是所有的设备。

    1 回复  |  直到 8 年前
        1
  •  1
  •   solidpixel    8 年前

    我猜在那些减慢速度的设备上,你仍然有对飞行中纹理的突出引用,因此你正在迫使驱动程序创建一个幽灵分配。在此进行深入解释:

    https://community.arm.com/graphics/b/blog/posts/mali-performance-6-efficiently-updating-dynamic-resources