OpenGL: как настроить OpenGL для рендеринга только в FBO, без вывода на экран/окно/управление?

Во-первых, я использую OpenTK в приложении WPF, но я думаю, что это больше общая вещь OpenGL.

В моем приложении я хочу иметь возможность отображать 3D-материал в текстуру. Мне НЕ нужен вывод в окно или управление на экране — я просто хочу отображать фоновую текстуру.

Итак, как мне настроить OpenGL для этого? Обычно графический контекст должен создаваться с параметром devicecontext. Но в моем случае я не хочу выводить в контекст устройства, и я хочу отображать в FrameBufferObject фиксированного размера с настройками (например, 1024x1024, 32bpp, 32bits ZBuffer), которые не связаны с окном или дисплеем.

Надеюсь, у кого-нибудь есть опыт такой установки :)


person Pygmy    schedule 06.01.2011    source источник


Ответы (1)


Создание контекста выходит за рамки самого OpenGL API. Контексты GL создаются целевой графической системой, такой как Windows GDI, X11/GLX, Quartz/AGL. Теперь существует концепция под названием PBuffers, которую можно использовать для создания контекстов OpenGL с аппаратным ускорением, не привязанных к окну. Однако PBuffers обычно доступны только как расширение, поэтому вам нужен контекст OpenGL, чтобы зайти так далеко. Решение состоит в том, чтобы создать фиктивное окно, которое никогда не должно быть видно на экране, с помощью которого создается фиктивный контекст GL для получения расширения. Затем, используя это, создается PBuffer и контекст OpenGL.

Однако, если вы хотите использовать FBO, вам не нужно прыгать через обруч PBuffer. Невидимое фиктивное окно с контекстом OpenGL также выполняет свою работу, поскольку целью рендеринга будет FBO.

person datenwolf    schedule 07.01.2011