我需要从窗口(或设备上下文)获取OpenGL上下文( HGLRC)。不能使用函数wglGetCurrentContext,因为我不知道上下文是否绑定到当前线程。如何做到这一点?
发布于 2017-04-08 17:40:44
HGLRC我需要从窗口(或设备上下文)获取OpenGL上下文( HGLRC)。
你不能!
OpenGL渲染上下文根本不会绑定到窗口。
Windows可以有任意数量的设备上下文。至少有一个主要上下文,但可以随时创建其他上下文。
可以在任何兼容的设备上下文( DC )上激活OpenGL呈现上下文,但是在DC和OpenGL上下文之间没有严格的联系。只要任何给定窗口的设备上下文与某个OpenGL上下文兼容,就可以使OpenGL上下文在该设备上下文上成为当前上下文。稍后,如果需要的话,可以取消该连接,并使相同的OpenGL上下文在不同窗口的不同DC上成为当前上下文(只要它们是兼容的)。
哦,它也可以反过来工作:您可以有任意数量的线程,每个线程在同一窗口/设备上下文中同时有一个不同的OpenGL上下文活动。
在windows和OpenGL上下文之间根本没有双向映射。
发布于 2017-04-08 17:29:39
您可以使用wglGetCurrentContext()检查当前是否绑定了上下文。但是没有任何函数可以用来检查HDC是否与HGLRC相关联。
以下是与相互获取相关的唯一函数:
HDC GetDC(HWND hWnd)
HWND WindowFromDC(HDC hdc)
// Depends on wglMakeCurrent()
HDC wglGetCurrentDC()
HGLRC wglGetCurrentContext()因此,您需要在创建HGLRC之后对其进行跟踪。
https://stackoverflow.com/questions/43291944
复制相似问题