Инвертировать глубину тестирования в OpenGL?
Если вы хотите выполнить рендеринг в обычном режиме там, где рендерится ближайший к камере объект, установите флаги OpenGL следующим образом:
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
Так что я бы предположил, что делает:
glDepthFunc(GL_GREATER);
glEnable(GL_DEPTH_TEST);
Позволил бы мне также визуализировать фрагменты, удаленные от камеры. Однако я не вижу вывода при установке флагов, как это. (в моем приложении не было внесено никаких других изменений)
Как вы можете сделать фрагменты дальше от камеры?
1 ответ
Диапазон глубины от 0 до 1...
когда вы очищаете глубину, весь массив по умолчанию заполняется единицами...
Вы можете изменить это с glClearDepth(0)
и вы можете изменить диапазон с glDepthRange(near, far)
GL_LESS
(по умолчанию) утверждает это:
"Проходит, если входящее значение глубины меньше сохраненного значения глубины".
GL_GREATER
состояния:
"Проходит, если входящее значение глубины больше, чем сохраненное значение глубины".
поэтому вам нужна некоторая очищенная глубина (0) для увеличения глубины накапливания. (чтобы увидеть только самые отдаленные фрагменты)