我怎么能初始化代码的最少量窗户的OpenGL上下文?最小的无窗口的OpenGL上下文初始化
我读过here,您可以使用wglCreateContextAttribsARB
创建窗户的情况下,但它并没有解释如何?
我怎么能初始化代码的最少量窗户的OpenGL上下文?最小的无窗口的OpenGL上下文初始化
我读过here,您可以使用wglCreateContextAttribsARB
创建窗户的情况下,但它并没有解释如何?
从链接:
创建无窗口背景下,离屏渲染。这可能不实际工作。
这第二句话是很重要的。从WGL_ARB_create_context specification:
4)如果有一种方法,使上下文电流而不同时结合 到一个窗口系统可绘制的?
解决:是的,但只有在OpenGL 3.0及更高版本。这导致 上下文以无效默认帧缓冲区,其中的含义是在OpenGL 3.0的规范中定义 。
注:显然在Windows上,OPENGL32.DLL利用提拉 论证,以确定驾驶员的命名空间,所以我们可能不 能够解决它。
规范不允许你创建上下文没有窗户,因为它需要你设置到设备上下文的像素格式。但是你理论上可以在使上下文成为当前的情况下为HDC传递NULL,这会导致OpenGL没有默认的帧缓冲区。
但是,正如上面所指出的,这可能不是实际工作。你可以试着看看会发生什么,但我不会让自己的希望上升。
实现离屏渲染的常用方法是:
另一种选择是使用由创建常规OpenGL窗口帧缓冲对象(FBO),但不是渲染到主帧缓冲区渲染到帧缓冲区对象缓存,并有人看不见OpenGL窗口。
对于初学者来说,有可能有代码段? – user377178
另一个东西:
HDC hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL);
但ReleaseDC
不it.DeleteDC确实工作。
“不起作用”是什么意思? 'ReleaseDC'和'DeleteDC'不是对等的,它们的用途完全不同。 – BDL
感谢您的回答。那么创建无窗口环境的最简单的方法是什么? – ronag
另一个尝试将使用屏幕DC(传递NULL到* GetDC *例程)。 – Luca
@Luca:你不能设置根/屏幕窗口的PIXELFORMATDESCRIPTOR! OpenGL上下文必须具有可兼容的像素格式。因此,你的建议是非常糟糕的建议。 – datenwolf