使用wglMakeCurrent(0,0)
后发布GL上下文是否有意义?
使用后是否有任何性能优势,而不是在上下文最新时切换到另一个上下文?
答案 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
将被忽略。