2016-01-24 99 views

回答

2

使用WGL,只能在创建上下文时为窗口设置一次像素格式,并且一旦客户端驱动程序加载完成,只能调用wglChoosePixelFormatARB()函数,并且客户端驱动程序仅在您拥有OpenGL上下文。是的,这是循环的。因此,这意味着你必须做到以下几点:

  1. 与OpenGL上下文创建的窗口。

  2. 获取wglChoosePixelFormatARB()的函数指针。

  3. 销毁窗口,并创建一个具有所需像素格式的新窗口。

如果你有任何意义的,你会使用SDL或GLFW为你做这个,因为它只是一堆你写管道的,有一个在学习如何做没有价值它,你可能想要完成一些真正的工作。 SDL/GLFW /等。 99%的OpenGL游戏是如何开发出来的。

如果您确实想自己做这件事并且陷入困境,请查看SDL或GLFW源代码以了解它们是如何实现的。

  • 在SDL中,src/video/windows/SDL_windowsopengl.c文件有一个功能WIN_GL_ChoosePixelFormatARB()这你想要做什么。另请注意功能WIN_GL_LoadLibrary()

  • 在GLFW中,src/win32_window.c文件有一个功能_glfwPlatformCreateWindow(),它可以做你想做的。

P.S. GLEW在核心环境和现代卡片方面有点不合适,请小心。那里还有其他的GL装载机。

+0

你可以推荐比glew更好的“gl功能装载机”吗? – Pilpel

+0

@Pilpel:不幸的是,我只使用过两次:我使用了GLEW,并且我自己翻译了(通过解析OpenGL API规范)。 GLEW的问题在于,它不适用于核心上下文,它应该是一个简单的修复,但它们只是没有完成。请参阅:https://www.opengl.org/wiki/OpenGL_Loading_Library –

+0

“如果您对您有任何意义,您将使用SDL或GLFW为您完成此操作,因为这只是一大堆管道工作,您必须写“ - 但你自己写了大量的opengl函数指针代码!? – Pilpel