Я учусь рисовать скайбокс с помощью кубических карт из следующего ресурса .
Я дошел до того, что он говорит о том, как мы можем оптимизировать рендеринг скайбокса. ,Я получаю, что вместо рендеринга скайбокса сначала, что приведет к вычислению width*height
ваших фрагментов области просмотра, а затем только к тому, что они будут перерисованы другими объектами, лучше всего нарисовать его последним и подделать его значение глубины, равное 1.0f
присваивая gl_Position
вершинного шейдера скайбокса gl_Position = pos.xyww
, по существу делая каждый gl_FragCoord.z
равным 1.0f
из-за деления перспективы.
Теперь после получения скайбокса каждый из его фрагментов имеет максимумзначение глубины 1.0f
он меняет функцию глубины на GL_LEQUAL
вместо GL_LESS
.
Здесь я немного запутался. Если мы отрисовываем скайбокс последним и его значения глубины равны 1.0f
, почему нам нужно изменить функцию глубины на GL_LEQUAL
? Не будет ли достаточно установить его на GL_LESS
, потому что если мы будем рендерить каждый другой объект в сцене, его значение глубины, вероятно, будет меньше, чем 1.0f
, поэтому оно запишет свое значение в z-buffer
, значение меньшечем 1.0f
. Теперь, если мы установим функцию глубины для скайбокса на GL_LESS
, он будет передавать только фрагменты со значением глубины, меньшим, чем на самом деле в z-buffer
, что, вероятно, будет пропускать только фрагменты, которые не охватывают другие объекты, так почемунам нужны GL_LEQUAL
?