这是同一 3D 场景的 2 张图像,来自相同的视点(虚拟相机),带有和不带有 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);
问题
- 为什么两张图片之间会有这样的差异?当然,人们会期待差异,但我不明白为什么没有 BackCulling深度图如此平滑,而使用 BackCulling深度值似乎不那么连续。
- 在没有 BackCulling的情况下,对于某个像素,深度缓冲区的值是多少?是离相机更近的那个(平滑的图像看起来像这样),还是因为很多东西都投射到同一个二维点/像素上,所以我应该期待别的东西?
参考 - 3D 场景 - 2D 帧