как обращаться с глубиной в GLSL - PullRequest
2 голосов
/ 13 октября 2011

У меня проблема с FBO и глубиной в openGL.Я передаю матрицы проекции, вида и модели в шейдер, который пишет в данный буфер.Когда я освобождаю FBO и пишу gl_FragColor, сцена отображается так, как должна.Но когда я записываю в gl_FragData [0], а затем записываю сопровождающую текстуру в квадрант с выравниванием по экрану, объекты рисуются в соответствии с обработкой в ​​обратном порядке, а не с глубиной ... Я могу видеть сквозь объекты, обработанные вначале, до объектов, обработанных после.У кого-нибудь была такая же проблема и знают ли они исправление?Или кто-то может предоставить синтаксис для чтения значений глубины из вершинного шейдера, запроса текущей глубины, а затем записи в буфер глубины в зависимости от сравнения, т. Е. Обработки операции вручную в фрагментном шейдере.

1 Ответ

4 голосов
/ 14 октября 2011

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

...