已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
上个月关门了。
Improve this question
这是一个关于SO answer的后续问题。
如果我有以下设置
eglMakeCurrent(,,,contextA);
glCreateTextures(,texHandles);
...
eglMakeCurrent(,,,contextB);
glTextureParameterf(texHandles[0],,);
其中contextA
和contextB
是共享上下文。假设上面代码片段中的所有内容都按照OpenGL规范正确设置。由于texture对象不是容器对象,设置texture参数的调用是否成功?
1条答案
按热度按时间9rbhqvlz1#
对象状态的变化在上下文之间传播,雅阁标准第5.3节中的规则。这些都是相当详细和复杂的。但一般来说,传播这种变化需要两件事:确保函数的设置状态已经完成执行,并在新的上下文中显式绑定对象(直接或间接)。
因此,为了在上下文B中使用对象,必须首先确保在上下文A中完成创建操作。仅仅一个CPU互斥是不够的;你需要使用
glFinish
或者在上下文A(发送上下文)中等待同步对象。这个命令必须在上下文B使用它之前“发生”。要访问对象的存储状态的更新,上下文B必须绑定该对象(在上下文A的上述等待完成之后)。DSA函数不充当绑定操作,因此即使您想使用DSA,也必须首先绑定对象的。