在我的软件中,我正在生成一个虚拟窗口以查询 Windows 的各种像素格式,然后销毁该窗口,然后在选择适当的格式后创建一个新窗口。
初始化第一个窗口后,我使用 glewInit() 初始化 glew 以使用 wglChoosePixelFormatARB 函数。尽管在销毁虚拟窗口后,扩展继续运行,但我知道这在技术上并不“正确”,因为理论上两个窗口可能有两组不同的函数指针。因此,我想在创建第二个窗口后再次初始化 glew。
当我这样做时,我会从普通函数中得到错误,例如:
GLint viewport[4];
::glGetIntegerv(GL_VIEWPORT, viewport);
, glError 为 1280 - 虽然奇怪的是,当我检查视口时,它似乎包含正确的值(我正在查看 glGetError() 以查看上一个命令是否导致错误)。
所以,我的问题是:使用 Windows 所需的两种状态 OpenGL 初始化(创建虚拟窗口、初始化扩展、使用扩展、销毁虚拟窗口、创建实际窗口),当新的window 是当前上下文吗?