Иногда я сталкиваюсь с местами, где я хочу получить объект кадрового буфера OpenGL, но где меня не интересует открытие какого-либо окна.
Можно ли создать контекст opengl, не привязывая его к какому-либо окну?
Да! вы можете использовать окно рабочего стола в качестве окна, переданного в OpenGL, до тех пор, пока вы не попытаетесь что-либо отобразить на нем;)
Просто вызовите GetDesktopWindow и передайте результат в качестве аргумента при создании нового окна OpenGL.
http://www.opengl.org/wiki/Creating_an_OpenGL_Context
Согласно этой веб-странице, WGL_ARB_create_context может использоваться для создания контекста без окна. Я на самом деле не пробовал это сам. Я использовал freeGLUT для создания контекста, а затем отображал за кадром в framebuffer + renderbuffer Я выхожу из программы, никогда не вызывая glutMainLoop. Это клугы, но это работает для моих целей.
WGL_ARB_create_context
Да, вы можете выполнять рендеринг вне экрана с помощью OpenGL, но точный способ его настройки зависит от операционной системы. Наиболее близким к независимой от ОС способом было бы использовать Mesa 3D , но тогда рендеринг вне экрана не будет ускорен.