Создание контекста 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 для закадрового рендеринга.

12

Решение

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

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

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

10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]