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