19

我试图弄清楚创建用于离屏渲染的无窗口 OpenGL 程序的最简单方法是什么。

目前我使用它,到目前为止它工作正常:(为清楚起见,此处删除了错误检查)

BOOL create_opengl_context(){
    GLuint PixelFormat;
    static PIXELFORMATDESCRIPTOR pfd;
    hDC = GetDC(NULL);
    PixelFormat = ChoosePixelFormat(hDC, &pfd);
    SetPixelFormat(hDC, PixelFormat, &pfd);
    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
}

这可以安全使用吗?创建无窗口 OpenGL 程序的“标准”方法是什么?

编辑:我正在使用 FBO 进行屏幕外渲染。

4

1 回答 1

14

纯无窗口 OpenGL 的旧方法是使用 PBuffer。在 Windows 上,这需要使用常规窗口创建中间 OpenGL 上下文,以获取所需的扩展函数指针。在 X11/GLX 上它可以毫不费力地工作。

实现离屏渲染的现代方法是使用常规但隐藏的窗口,该窗口具有通常的 OpenGL 上下文和 FBO 作为渲染目标。

最前沿但支持不太好的方法(某些嵌入式设备除外)是使用 EGL 来创建可绘制对象。

于 2012-09-18T17:45:26.963 回答