Я провел много исследований о том, как заполнять буфер глубины вручную безуспешно. Пока что все, что я знаю, это текстура глубины (GL_DEPTH_COMPONENT), прикрепленная к FBO, которая автоматически заполняется OpenGL во время прохода рендеринга.
Например, работает следующий код фрагментного шейдера:
/*
** Output pixel color value.
*/
layout (location = 0) out float FragmentDepth;
/*
** Fragment shader entry point.
*/
void main(void)
{
//Depth filled automatically
}
Итак, если я напишу следующую строку кода в основной:
FragmentDepth = 0.0f; //the texture should be black
результат такой же!
Поэтому мне интересно, как можно «сказать» OpenGL, что он не записывает автоматически в буфер глубины и не учитывает мое уравнение глубины?
Я попробовал функцию glDepthMask (false), но, конечно, это решение не работает!
На самом деле, я бы хотел настроить заполнение буфера глубины и не зависеть от работы OpenGL в фоновом режиме.
Как я могу это сделать?
Единственный способ - использовать буфер цвета (например, формат текстуры GL_RGB) для хранения значений глубины вручную?
Заранее большое спасибо за вашу помощь!
gl_FragDepth
то, что вы ищете? opengl.org/sdk/docs/man/html/gl_FragDepth.xhtml < / а> - person dari   schedule 30.07.2015