Opengl glSubTexImage是否阻止?

Opengl glSubTexImage是否阻止?,opengl,synchronization,textures,Opengl,Synchronization,Textures,这是一个关于OpenGL中同步的问题。问题是: 在下面的(伪)代码示例中,同步发生在哪个点上 // 1. try to map buffer object (write only and invalidate buffer) copy new data to mapped buffer unmap buffer // 2. bind buffer call subteximage to fill texture from buffer unbind buffer // 3. r

这是一个关于OpenGL中同步的问题。问题是:

在下面的(伪)代码示例中,同步发生在哪个点上

// 1.
try to map buffer object (write only and invalidate buffer)
  copy new data to mapped buffer   
unmap buffer

// 2.
bind buffer
  call subteximage to fill texture from buffer
unbind buffer

// 3.
render with texture
据我所知,只要“使用对象”,同步就会发生。现在,如果纹理是从缓冲区填充的,或者是在渲染中使用的,那么就有问题了

如果glSubTexImage不阻塞,则可以通过在纹理更新调用中使用缓冲区更新来流式传输纹理数据


Florian

在使用纹理(或帧缓冲区交换)进行渲染后,您的代码可以在复制和glFlush之间的任何位置进行阻止。这取决于实现。

hmm:(你能猜到我是如何通过“大二”实现的吗?实现甚至不能同步,只要它对缓冲区对象进行多重缓冲(这通常取决于创建缓冲区时使用的标志,但也取决于实现)@Florian,我不知道。但除了计时,你无论如何都无法观察到行为。无论何时实现阻止,最终结果都是一样的,因此你不能按照你的建议“流化纹理”。为了提高效率,实现应该尽可能晚地阻止。这就是想法。实现在最后一个r之后上载新的纹理数据在新帧的预计算之前调用ender。现在,如果可以使用上述方法“按默认值”流式传输数据,它将正常失败,代码中不会有任何编程开销。