OpenGL: Как настроить OpenGL только для рендеринга в FBO, без вывода на экран / окно / элемент управления? - PullRequest
4 голосов
/ 07 января 2011

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

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

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

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

1 Ответ

3 голосов
/ 07 января 2011

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

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

...