Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从窗口获取OpenGL上下文?_C_Windows_Winapi_Opengl - Fatal编程技术网

C 如何从窗口获取OpenGL上下文?

C 如何从窗口获取OpenGL上下文?,c,windows,winapi,opengl,C,Windows,Winapi,Opengl,我需要从窗口(或设备上下文)获取OpenGL上下文(一个HGLRC)。无法使用函数wglGetCurrentContext,因为我不知道上下文是否绑定到当前线程。如何做到这一点?您可以使用wglGetCurrentContext()检查当前是否绑定了上下文。但是没有任何功能可用于检查HDC是否与HGLRC关联 这些是相互联系的唯一功能: HDC GetDC(HWND hWnd) HWND WindowFromDC(HDC hdc) // Depends on wglMakeCurrent()

我需要从窗口(或设备上下文)获取OpenGL上下文(一个
HGLRC
)。无法使用函数
wglGetCurrentContext
,因为我不知道上下文是否绑定到当前线程。如何做到这一点?

您可以使用
wglGetCurrentContext()
检查当前是否绑定了上下文。但是没有任何功能可用于检查
HDC
是否与
HGLRC
关联

这些是相互联系的唯一功能:

HDC GetDC(HWND hWnd)
HWND WindowFromDC(HDC hdc)

// Depends on wglMakeCurrent()
HDC wglGetCurrentDC()
HGLRC wglGetCurrentContext()

因此,您需要在创建之后跟踪
HGLRC

您可以使用
wglGetCurrentContext()
检查当前是否绑定了上下文。但是没有任何功能可用于检查
HDC
是否与
HGLRC
关联

这些是相互联系的唯一功能:

HDC GetDC(HWND hWnd)
HWND WindowFromDC(HDC hdc)

// Depends on wglMakeCurrent()
HDC wglGetCurrentDC()
HGLRC wglGetCurrentContext()
因此,您需要在创建之后跟踪
HGLRC

我需要从窗口(或设备上下文)获取OpenGL上下文(HGLRC)

你不能

OpenGL渲染上下文根本不与windows绑定

Windows可以有任意数量的设备上下文。至少有一个主上下文,但可以随时创建其他上下文

OpenGL渲染上下文可以在任何兼容的设备上下文(DC)上激活,但DC和OpenGL上下文之间没有严格的联系。只要任何给定窗口的设备上下文与某个OpenGL上下文兼容,OpenGL上下文就可以在设备上下文上成为当前上下文。稍后,如果需要,可以撤消该连接,并且相同的OpenGL上下文可以在不同窗口的不同DC上变为当前(只要它们兼容)

哦,它也可以反过来工作:您可以有任意数量的线程,每个线程在同一窗口/设备上下文上同时具有不同的OpenGL上下文

windows和OpenGL上下文之间根本没有双射映射

我需要从窗口(或设备上下文)获取OpenGL上下文(HGLRC)

你不能

OpenGL渲染上下文根本不与windows绑定

Windows可以有任意数量的设备上下文。至少有一个主上下文,但可以随时创建其他上下文

OpenGL渲染上下文可以在任何兼容的设备上下文(DC)上激活,但DC和OpenGL上下文之间没有严格的联系。只要任何给定窗口的设备上下文与某个OpenGL上下文兼容,OpenGL上下文就可以在设备上下文上成为当前上下文。稍后,如果需要,可以撤消该连接,并且相同的OpenGL上下文可以在不同窗口的不同DC上变为当前(只要它们兼容)

哦,它也可以反过来工作:您可以有任意数量的线程,每个线程在同一窗口/设备上下文上同时具有不同的OpenGL上下文


windows和OpenGL上下文之间根本没有双射映射。

你提问的方式有点像XY问题()。你有问题X,你认为做Y可以帮助你解决X,但你也不知道Y。你为什么要问Y。告诉我们X。你到底想做什么?为什么在这个问题上会有落差票和接近票?这是一个很好的问题。仅仅因为这个问题没有解决方案,这并不意味着它是一个表述错误的问题。如果你深入研究OpenGL窗口系统集成细节,最终会发现这个问题。你有问题X,你认为做Y可以帮助你解决X,但你也不知道Y。你为什么要问Y。告诉我们X。你到底想做什么?为什么在这个问题上会有落差票和接近票?这是一个很好的问题。仅仅因为这个问题没有解决方案,这并不意味着它是一个表述错误的问题。如果您深入研究OpenGL窗口系统集成细节,最终会发现这一点。