gl_FragCoord
является неизменным и GLES SL не поставляет gl_FragDepth
.Поэтому невозможно установить глубину вывода фрагмента в шейдерном фрагменте.
В результате появляются две опции:
- не использовать аппаратный буфер глубины
- установка глубины в вершинном шейдере
Чтобы выполнить первое, вы должны привязать текстуру глубины к резервному блоку и впоследствии выполнить явное сравнение и сброс в фрагментном шейдере на основена gl_FragCoord
.
Чтобы выполнить последнее, вы должны представить массив точек, по одной на фрагмент, сэмплировать текстуру глубины в вершинном шейдере и вывести соответствующую глубину.Если ваше оборудование не поддерживает выборку текстур в вершинных шейдерах, то вы можете сделать то же самое с процессором.Оставьте вычисленные в CPU фрагменты в VBO, и вам не придется платить столько же за кадром.