Глубина FBO и вложения буфера рендеринга трафарета

OpenGL вики говорит, что для использования присоединения трафаретного буфера с буфером глубины в FBO необходимо создать буфер рендеринга с форматом типа GL_DEPTH24_STENCIL8, вроде бы GL_STENCIL_INDEXX не реализованы.

Чего я не понимаю, так это того, является ли такой буфер также буфером глубины, если я установил его как GL_DEPTH_STENCIL_ATTACHMENT? Или мне все же следует создать отдельный буфер рендеринга глубины с форматами (GL_DEPTH_COMPONENTXX)?


person Michael IV    schedule 06.05.2013    source источник
comment
На какой платформе вы находитесь?   -  person tadman    schedule 06.05.2013
comment
Linux/Windows OpenGL4.2   -  person Michael IV    schedule 06.05.2013


Ответы (1)


Дело не в том, что форматы STENCIL_INDEX не «реализованы». Дело в том, что спецификация не требует реализации, чтобы считать их завершенными. Реализациям разрешено отклонять комбинацию форматов изображений по любым причинам, которые они сочтут подходящими, за исключением случаев, когда вы придерживаетесь списка требуемых форматов изображений.

Изображение глубины/трафарета содержит в себе глубину и трафарет, точно так же, как красное/зеленое изображение содержит и красный, и зеленый. Так что да, вы прикрепляете одно и то же изображение к точкам GL_DEPTH_ATTACHMENT и GL_STENCIL_ATTACMENT. Или вы используете GL_DEPTH_STENCIL_ATTACHMENT как сокращение для обоих.

person Nicol Bolas    schedule 06.05.2013
comment
На самом деле я пытался использовать GL_STENCIL_INDEX, и это всегда приводило к неполному FBO. Также в той же вики сказано НЕ ДЕЛАЙТЕ ЭТОГО! ;) - person Michael IV; 06.05.2013