0

在使用后释放 GL 上下文是否有意义wglMakeCurrent(0,0)

使用后释放而不是在上下文处于当前状态时切换到另一个上下文是否有任何性能优势?

4

2 回答 2

2

正如wglMakeCurrent()将在内部调用 GPU 驱动程序一样,这完全是特定于实现的。然而,即使有技术原因在绑定新的上下文之前释放上下文以提高效率,每个明智的实现release;bind在执行直接切换时也应该在内部执行序列。

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

于 2018-04-17T20:07:29.497 回答
1

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

MSDN wglMakeCurrent(hdc,hglrc) 文档

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

.

于 2018-04-18T00:04:22.333 回答