我对 Windows 上 OpenGL 1.0 和 1.1 函数指针的性质有点困惑。我想我已经记下来了,但我不是 100% 确定,所以我希望有人能够确认或评论我目前的理解:
我目前的理解是,您应该使用 加载 1.2+ 函数wglGetProcAddress()
,但必须使用 加载 1.0 和 1.1GetProcAddress()
函数opengl32.dll
。然而,引起我注意的是,它可能会根据当前的上下文wglGetProcAddress()
返回不同的函数指针。HGLRC
然而,大概 1.0 和 1.1 的指针GetProcAddress()
总是相同的。这种行为上的差异感觉很不寻常。
所以,假设我有多个HGLRC
对象,我们将它们称为A
and B
。我调用wglGetProcAddress()
并将结果保存在单独的指针池中,一个A
用于B
. A
然而,我还必须将 1.0 和 1.1 函数加载到这些指针池中,在这种情况下,和的指针似乎B
总是相同的。
令我惊讶的是 1.0 和 1.1 函数因此必须是瘦包装器,它将 OpenGL 调用重定向到与当前HGLRC
. 然而,如果 Windows 上已经存在这样的重定向机制,那么我想知道为什么wglGetProcAddress()
不能也使用它,因为这样做会减轻它返回依赖于上下文的指针的危险。我什至不一定需要知道这个问题的答案,但这个问题的存在让我怀疑我是否一开始就理解正确。