无窗口创建OpenGL上下文

Roo*_*kie 16 c++ windows opengl off-screen

我想弄清楚为屏幕外渲染创建无窗口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);
}
Run Code Online (Sandbox Code Playgroud)

这样安全吗?创建无窗口OpenGL程序的"标准"方法是什么?

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

dat*_*olf 10

纯粹无窗口OpenGL的旧方法是使用PBuffer.在Windows上,这需要使用常规窗口创建中间OpenGL上下文以获取所需的扩展函数指针.在X11/GLX上它没有进一步的工作.

实现离屏渲染的现代方法是使用常规但隐藏的窗口,其中包含通常的OpenGL上下文和FBO作为渲染目标.

最前沿,但尚未得到很好支持的方法(某些嵌入式设备除外)正在使用EGL进行可绘制创建.