glTextureSubImage {n} D具有持久映射的源缓冲区对象

时间:2014-12-25 02:00:15

标签: opengl opengl-4

我刚才意识到在我的应用程序glTextureSubImage{n}D中会导致以下错误:

  

如果非零缓冲区对象名称,则生成GL_INVALID_OPERATION   绑定到GL_PIXEL_UNPACK_BUFFER目标和缓冲区对象   数据存储当前已映射。

但是,像素解包缓冲区具有持久映射,类似glCopyBufferSubData的类似函数允许从映射缓冲区复制:

  

如果源或目标,则生成GL_INVALID_OPERATION   缓冲区对象使用glMapBufferRange或glMapBuffer映射,除非   它们与在中设置的GL_MAP_PERSISTENT位映射   glMapBufferRange访问标志

我的问题是:

  1. 为什么glTextureSubImage {n} D无法处理持久映射的缓冲区,或者它可能只是OpenGL 4.4规范中的错误/缺失功能,是否有任何特殊/隐藏的原因?
  2. 是否有使用持久映射缓冲区更新大纹理部分的模式或技巧?
    我可以考虑添加另一个缓冲区,首先在该缓冲区上使用glCopyBufferData然后使用glTextureSubImage,但这很可能比在调用glTextureSubImage然后重新映射pixel-unpack缓冲区之前取消映射pixel-unpack缓冲区要慢。

0 个答案:

没有答案