Создание контекста OpenGL без окна

Я пытаюсь выяснить, что является самым простым способом создания оконной программы 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 для внеэкранного рендеринга.

Ответ 1

Старый метод для чисто Windowless OpenGL использует PBuffer. В Windows это требует создания промежуточного контекста OpenGL с использованием обычного окна для получения требуемых указателей функции расширения. На X11/GLX он работает без дальнейших церемоний.

Современный способ реализации внеэкранного рендеринга - использовать регулярное, но скрытое окно с обычным контекстом OpenGL и FBO в качестве цели рендеринга.

Край кровотечения и все же не очень хорошо поддерживаемый метод (за исключением некоторых встроенных устройств) использует EGL для создания с возможностью рисования.