graphics - 深度缓冲区和 Z 轴

标签 graphics opengl-es 3d depth-buffer

我正在读一本 OpenGL 书,其中指出了两个看似矛盾的陈述:

  1. 相机位于原点并俯视负 z 轴。
  2. 深度缓冲区清除为默认值 1.0,Z 值较低的像素通过可见性测试显示在屏幕上。

虽然我理解深度缓冲区的概念,但我不明白如何将小于另一个的 Z 确定为“位于”更高 Z 值的“前面”以用于传递深度缓冲测试。

我希望较高的 Z 值位于“前面”,从而赢得深度缓冲区比较。我在这里缺少什么?

最佳答案

Z 缓冲区中的值在 [0.0,1.0] 范围内,而 1.0 是视锥体中实际包含的更远距离(超出的任何值都不是)可见)。

这意味着在绘制形状的像素时,如果其 Z 值低于当前值,则它比那里的像素(没有任何像素或只是另一个像素)更靠近眼睛,因此 Z 会更新并且像素画了。否则像素将被丢弃。

关于graphics - 深度缓冲区和 Z 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181309/

相关文章:

language-agnostic - 2D运动模糊解决方案

c - 你会推荐什么简单的 C 图形库?

javascript - 在d3中,如何从SVG线中获取插值线数据?

c++ - 视锥体和透视矩阵

javascript - Threejs : WebGL 3D text to three. js海洋场景

objective-c - 使用 CGContextShowTextAtPoint 打印时,在 ° 符号之前使用 ¬ 打印 unicode 符号

android - 视频纹理 : Augmented Reality Framework for Android

ios - 浅色 Cocos2dx 上的 GL 混合

ios - 在没有完整 mip 链的情况下启用 mipmapping

c - 物体通过世界轴而不是局部轴OpenGL旋转