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