如何使用最少量的代码初始化无窗口OpenGL上下文?
我已阅读here您可以使用wglCreateContextAttribsARB
创建无窗口上下文,但是它没有解释如何?
答案 0 :(得分:5)
从链接:
创建没有窗口的上下文,用于屏幕外渲染。这实际上可能不起作用。
第二句很重要。来自WGL_ARB_create_context specification:
4)是否应该有一种方法可以使上下文保持不受约束 它可以同时绘制一个窗口系统吗?
已解决:是的,但仅限于OpenGL 3.0及更高版本。这导致了 具有无效默认帧缓冲区的上下文,其含义为 在OpenGL 3.0规范中定义。
注意:显然在Windows上,opengl32.dll使用了drawable 用于标识驱动程序命名空间的参数,因此我们可能不会 能够解决它。
规范不允许您创建没有窗口的上下文,因为它需要您在设备上下文中设置的像素格式。但是理论上 可以在使上下文变为当前时为HDC传递NULL,这会导致OpenGL没有默认的帧缓冲。
但是,如上所述,这可能实际上不起作用。你可以尝试看看会发生什么,但我不会抱有希望。
答案 1 :(得分:2)
实现屏幕外渲染的常用方法是:
另一种选择是使用帧缓冲对象(FBO)来创建常规OpenGL窗口,但不是渲染到主帧缓冲区,而是渲染到帧缓冲区对象缓冲区,而OpenGL窗口则不可见。
答案 2 :(得分:-2)
HDC hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL);
但是ReleaseDC
无法使用它.DeleteDC可以。