从链接:
在没有窗口的情况下创建上下文,用于屏幕外渲染.这可能实际上不起作用.
第二句很重要.从WGL_ARB_create_context规范:
4)是否应该有一种方法可以使上下文保持当前状态而不将其绑定到同时可绘制的窗口系统?
解决:是的,但仅限于OpenGL 3.0及更高版本.这导致具有无效默认帧缓冲区的上下文,其含义在OpenGL 3.0规范中定义.
注意:显然在Windows上,opengl32.dll使用drawable参数来标识驱动程序的命名空间,因此我们可能无法解决它.
规范不允许您创建没有窗口的上下文,因为它需要您在设备上下文中设置的像素格式.但理论上,在使上下文变为当前时,您可以为HDC传递NULL,这会导致OpenGL没有默认的帧缓冲区.
但是,如上所述,这可能实际上不起作用.你可以尝试看看会发生什么,但我不会抱有希望.
实现屏幕外渲染的常用方法是:
另一种选择是使用帧缓冲对象(FBO),通过它创建常规的OpenGL窗口,但不渲染到主帧缓冲,而是渲染到帧缓冲对象缓冲区,而使OpenGL窗口不可见。