Вот 2 изображения одной и той же 3D-сцены, с той же точки зрения (виртуальная камера), с обратной оболочкой и без нее. Изображения не отображают окончательную сетку, а содержимое буфера глубины.OpenGL - BackCulling - значения буфера глубины
Без BackCulling
glDisable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LESS);
С BackCulling
glEnable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_LESS);
Вопрос
- Почему существует такая разница между 2 изображения? Конечно, можно было бы ожидать разницы, но я не понимаю, почему без BackCulling карта глубины настолько плавная, а с BackCulling значения глубины не кажутся такими непрерывными.
- В случае без обратного вызова, для определенного пикселя, каково значение буфера глубины? Является ли он ближе к камере (гладкое изображение выглядит так), или, поскольку многие вещи проецируются на одну и ту же 2-мерную точку/пиксель, я должен ожидать чего-то еще?
Ссылка - 3D сцены - 2D кадров
Действительно, @NicolBolas, проверяя сетку, обратные поверхности-вершины имеют схожую глубину (в отличие от вершин-вершин), но я не думал о том, что вы предложили. Большое вам спасибо, это работает! Просто добавили предложенную команду выше кодовых строк, упомянутых выше :) –
Также обратите внимание, что вы также можете использовать glCullFace. Это изменяет, отбираете ли вы лицевую или заднюю поверхность (или и то и другое). – Invalid