Инвертировать глубину тестирования в 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) для увеличения глубины накапливания. (чтобы увидеть только самые отдаленные фрагменты)

Другие вопросы по тегам