繁体   English   中英

最小无窗口 OpenGL 上下文初始化

[英]Minimal Windowless OpenGL Context Initialization

如何用最少的代码初始化无窗口 OpenGL 上下文?

我在这里读到你可以使用wglCreateContextAttribsARB来创建无窗口上下文,但是它没有解释如何?

从链接:

创建没有 window 的上下文,用于离屏渲染。 这可能实际上不起作用。

第二句话很重要。 来自WGL_ARB_create_context 规范

4) 是否应该有一种方法可以使上下文成为当前而不将其绑定到同时可绘制的 window 系统?

已解决:是的,但仅在 OpenGL 3.0 及更高版本中。 这会导致默认帧缓冲区无效的上下文,其含义在 OpenGL 3.0 规范中定义。

注意:显然在 Windows 上,opengl32.dll 使用 drawable 参数来识别驱动程序的命名空间,因此我们可能无法解决它。

该规范不允许您在没有 window 的情况下创建上下文,因为它需要您在设备上下文中设置的像素格式。 但是理论上你可以在使上下文成为当前时为 HDC 传递 NULL,这会导致 OpenGL 没有默认的帧缓冲区。

但是,如上所述,这实际上可能不起作用。 你可以试试看会发生什么,但我不抱希望。

实现离屏渲染的常用方法是:

  1. 创建一个虚拟 window + OpenGL 上下文以访问扩展
  2. 获取创建 PBuffer 的函数
  3. 创建 PBuffer DC
  4. 在 PBuffer 上创建 OpenGL 上下文
  5. 摧毁假人 window

Another option is using Framebuffer Objects (FBO) by which you create a regular OpenGL window, but instead of rendering to the main framebuffer you render to Framebuffer Object buffers, with the OpenGL window being made invisible.

另一个东西:

HDC  hdc = CreateDC(L"DISPLAY",NULL,NULL,NULL);

但是ReleaseDC不能使用它。DeleteDC 可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM