假设有一个GUI程序有两个窗口,每个窗口都有自己的OpenGL上下文,只有一个线程。
在某些时候,我们希望在第一个和第二个窗口中渲染内容,因此我们为每个OpenGL上下文分配一个缓冲区,其中包含glGenBuffers(1, &buffer_)
(以及其他内容)。
我的问题是,glGenBuffers()
函数是全局返回唯一的对象名称,还是针对每个OpenGL上下文返回本地对象名称?换句话说,这两个OpenGL上下文是否可以具有glGenBuffers()
提供的相同对象名称?当然,除了object name == 0,这是一个特殊的对象名称。
如果它们可以,这是否意味着它们共享此对象名称?如果其中一个OpenGL上下文按glDeleteBuffers(1, &buffer_)
取消分配对象,会发生什么?
1条答案
按热度按时间eagi6jfj1#
取决于上下文是否在同一共享组中。
请参见OpenGL 4.6 Core Profile规范的第5章“共享对象和多个上下文”。