OpenGL核心技术之深度测试.doc

OpenGL核心技术之深度测试

OpenGL核心技术之深度测试 深度测试在游戏引擎中使用的非常多,比如在Unity3D引擎中,在UI之间的遮挡设置可以通过其深度值进行设置,在3D场景中也会根据其Z值进行设置其前后关系。这些都会用到深度测试技术,由于Unity3D引擎是跨平台的,它在移动端的渲染使用的是OpenGL,所以后面的系列文章就介绍关于OpenGL使用的核心技术。 深度测试需要一个存储区域,这个存储区域就称为深度缓冲,它就像颜色缓冲用于存储所有的片段颜色,深度缓冲和颜色缓冲区有相同的宽度和高度。深度缓冲由窗口系统自动创建并将其深度值存储为 16、 24 或 32 位浮点数,在大多数系统中深度缓冲区为24位。 使用深度测试就必须要启用它,当深度测试启用的时候, OpenGL 测试深度缓冲区内的深度值。OpenGL 执行深度测试的时候,如果此测试通过,深度缓冲内的值将被设为新的深度值。如果深度测试失败,则丢弃该片段。深度测试在片段着色器运行之后,它是在屏幕空间中执行的。屏幕空间坐标直接有关的视区,由OpenGL的glViewport函数给定,并且可以通过GLSL的片段着色器中内置的 gl_FragCoord变量访问。gl_FragCoord 的 X 和 y 表示该片段的屏幕空间坐标 ((0,0) 在左下角)。gl_FragCoord 还包含一个 z 坐标,它包含了片段的实际深度值。此 z 坐标值是与深度缓冲

文档评论(0)

1亿VIP精品文档

相关文档