2012-01-12 5 views
2

в OpenGL 4.2 спецификации (раздел 3.3.1) четко указано, что:мультитекстурированного глубина FBO/трафарет и OpenGL спецификации

Поскольку каждый образец включает в себя цвет, глубину и трафарета информацию, цвет (в том числе операции текстуры), функции глубины и трафарета выполняют аналогично режиму однокадровой съемки . В буфер кадров добавлен дополнительный буфер, называемый мультисэмпл-буфером. Пиксельные значения образцов, включая цвета, глубину и значения трафарета, сохраняются в этом буфере . Образцы содержат отдельные значения цвета для каждого цвета фрагмента. Когда фреймбуфер включает буфер мультисэмпла, он не включает в себя глубину или трафарет буферов, даже если буфер мультисэмплов не хранит значения глубины или трафаретов. Цветные буферы действительно сосуществуют с буфером мультисэмплов.

Однако, если мне нужно испытание глубины/трафарета, мне нужно настроить многозадачный рендерингщик depth_stencil.

Разве это противоречит спецификациям или я что-то упускаю?

ответ

3

Хорошо, давайте посмотрим. Раздел 4.4.4 гласит:

Объект фреймбуфера называется фреймбуфера полным, если все его прикрепленных изображений и всех параметров, необходимых фреймбуфером использовать фреймбуфер для визуализации и чтения, последовательно определены и соответствуют требованиям определенных ниже. Правила полноты фреймбуфера зависят от свойств прикрепленных изображений и от определенных ограничений, зависящих от реализации.

Среди многих упомянутых правил «ниже»:

Значение RENDERBUFFER_SAMPLES является одинаковым для всех подключенных рендер-буферов; значение TEXTURE_SAMPLES одинаково для всех прикрепленных текстур; и, если прикрепленные изображения представляют собой смесь рендеринговых буферов и текстур, значение RENDERBUFFER_SAMPLES соответствует значению TEXTURE_-SAMPLES.

Таким образом, если буфер глубины/трафарета не мультисэмплирован, а цветной буфер мультисэмплирован, то ваш FBO не будет завершен. И вы не можете отобразить неполный объект фреймбуфера.

Так что да, вам нужно не только удостовериться, что они мультисэмплированы, но и должны использовать номер.

+0

Да, конечно, я добавляю многозадачный рендеринг с глубиной, используя те же образцы draw_renderbuffer (конечно, иначе fbo не будет полным), но я задавал вопрос о необходимости глубины/трафарета в первую очередь, когда раздел 3.3. 1 указывает, что такие bufefr (s) не должны присутствовать в мультисэмплированном fbo – user815129

+0

@ user815129: И все же в разделе 3.3.1 ничего не говорится о мультисэмплинге ** FBO **. Речь идет конкретно о фреймбуффе * по умолчанию *. –

+0

Да, я так думаю, я просто разместил, чтобы узнать, нужна ли ms fbo depth_stencil по другому опыту. – user815129