Я пытаюсь выяснить, каков самый простой способ создания безоконной программы 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 для закадрового рендеринга.
Старый метод для OpenGL без окон — использование PBuffer. В Windows это требует создания промежуточного контекста OpenGL с использованием обычного окна для получения требуемых указателей на функции расширения. На X11 / GLX работает без лишних слов.
Современный способ реализации внеэкранного рендеринга заключается в использовании обычного, но скрытого окна с обычным контекстом OpenGL и FBO в качестве цели рендеринга.
Самый передовой и пока не очень хорошо поддерживаемый метод (за исключением некоторых встроенных устройств) использует EGL для рисования.
Других решений пока нет …