2013-11-09 3 views
1

Это будет мой первый рендеринг для всего, кроме буфера кадров по умолчанию, и мои поисковые запросы показывают, что FBO - это путь для выполнения этой задачи. Собственно, они кажутся единственным методом из того, что я видел - пожалуйста, исправьте меня, если я ошибаюсь в этом.Как правильно визуализировать текстуру в OpenGL 3.1

Я специально пытаюсь ограничить себя функциональностью OpenGL, которая была ядром с 3.1. Согласно OpenGL wiki, ФБО были ядром с 3,0.

Я нашел большое количество ресурсов при настройке FBOs и способах прикрепления к ним текстур, но все они используют функции, которые (согласно OpenGL wiki) имеют только ядро ​​с 3.2 (например, glFrameBufferTexture и glFrameBufferTextureLayer).

Каков правильный/рекомендуемый метод визуализации текстуры с использованием OpenGL 3.1 или ниже? Следует отметить, что мне понадобится буфер глубины для того, что я делаю (функция, предоставляемая FBO).

ПРИМЕЧАНИЕ: Первоначально я назвал это «Как прикрепить текстуру к объекту буфера кадров в OpenGL 3.1», но пошел с более общим названием в случае, если есть другие варианты.

ответ

2

Фактически, они кажутся единственным методом из того, что я видел - пожалуйста, исправьте меня, если я ошибаюсь в этом.

Есть также PBuffers, но вы не хотите их использовать. Они сложны для работы, их сложно настроить и могут привести к их недействительности в неудобные времена. Для справки: PBuffers - вид невидимых окон. Они сами по себе бесполезны, потому что они не могут оказывать текстуру; т. е. вам пришлось копировать текстуру после рендеринга в PBuffer. Затем было добавлено расширение, позволяющее связывать PBuffer как текстуру.

Не беспокойтесь об этом.

Я специально стараюсь ограничивать себя функциональность OpenGL, которая была ядром, так как 3,1

Собственно FrameBuffer объекты были вокруг много, гораздо больше. И поскольку они в основном относятся к управлению памятью, даже самый старый графический процессор может фактически поддерживать их; по крайней мере, если вы делаете свой формат похожим на типичный экранный фреймбуфер.

До OpenGL-3 FrameBuffer объекты не были так называемые расширение, и если вы посмотрите на спецификации фреймбуфера объекта расширения в ARB_framebuffer_object вы увидите, что они были утверждены в отношении в то время 12-летний OpenGL-1,1; работа над ним началась уже некоторое время ранее в виде расширения EXT_framebuffer_object.

Итак, хорошо, они хорошо поддерживаются. Если вы ограничиваете себя OpenGL-3, вам не нужно это беспокоиться, но если вы хотите поддерживать более широкий спектр аппаратных средств (например, мой последний проект, OpenGL-2.1 - это цель), то вы будете должны использовать это расширение.

в соответствии с OpenGL вики

OpenGL вики не авторитетным справочником.Технические характеристики. И согласно OpenGL-3.0 эти функции являются частью указанной функциональности. Обратите внимание, что OpenGL сделал ввести ядро ​​ и Совместимость профили только с OpenGL-3.2, так вот почему вы не собираетесь найти что-нибудь ядро ​​ для перед тем OpenGL-3.2

+0

Reading над OpenGL спецификации для другой проблемы я Я заметил, что 'glFrameBufferTexture' не находится в спецификации 3.1, вместо этого используются только' glFrameBufferTexture1D, 2D, 3D'. Я думаю, что именно здесь возникла путаница. –

Смежные вопросы