是否应使用wglMakeCurrent(0,0)释放GL上下文?

时间:2018-04-17 19:18:47

标签: opengl wgl

使用wglMakeCurrent(0,0)后发布GL上下文是否有意义?

使用后是否有任何性能优势,而不是在上下文最新时切换到另一个上下文?

2 个答案:

答案 0 :(得分:2)

由于wglMakeCurrent()将在内部调用GPU驱动程序,因此这完全是针对特定于实现的。但是,即使在绑定新的conext之前释放conext有更高效的技术原因,每个合理的实现也应该在进行直接切换时在内部执行release;bind序列。

但是,切换渲染上下文的性能问题通常不是wglMakeCurrent的开销。它是默认情况下交换机隐含的实际GL刷新。如果您有兴趣最有效地在多个GL上下文之间切换,您应该查看WGL_ARB_context_flush_control扩展,它允许控制上下文切换时的刷新行为。

答案 1 :(得分:1)

在窗口没有样式标志CS_OWNDC的情况下可能有意义。在这种情况下,设备上下文不是私有的,应该在不再需要时立即释放。

MSDN wglMakeCurrent(hdc,hglrc) doc

  

如果hglrc为NULL,则该函数使调用线程成为当前线程   渲染上下文不再是最新的,并释放设备上下文   渲染上下文使用的。在这种情况下,hdc将被忽略。