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