OpenGL ES之“深度测试”与“模板测试”的使用流程

举报
Serendipity·y 发表于 2022/06/23 00:12:50 2022/06/23
【摘要】 一、深度测试 OpenGL ES 深度测试是指在片段着色器执行之后,利用深度缓冲所保存的深度值决定当前片段是否被丢弃的过程。深度缓冲区通常和颜色缓冲区有着相同的宽度和高度,一般由窗口系统自动创建并将...

一、深度测试

  • OpenGL ES 深度测试是指在片段着色器执行之后,利用深度缓冲所保存的深度值决定当前片段是否被丢弃的过程。深度缓冲区通常和颜色缓冲区有着相同的宽度和高度,一般由窗口系统自动创建并将其深度值存储为 16、 24 或 32 位浮点数。
  • 当深度测试开启的时候,OpenGL ES 才会测试深度缓冲区中的深度值,如果此测试通过,深度缓冲内的值可以被设为新的深度值;如果深度测试失败,则丢弃该片段。
  • 深度测试是在片段着色器运行之后(并且在模板测试运行之后)在屏幕空间中执行的。与屏幕空间坐标相关的视区是由 OpenGL 的视口设置函数 glViewport 函数给定,并且可以通过片段着色器中内置的 gl_FragCoord 变量访问。gl_FragCoord 的 X 和 y 表示该片段的屏幕空间坐标 ((0,0) 在左下角),其取值范围由 glViewport 函数决定,屏幕空间坐标原点位于左下角。gl_FragCoord 还包含一个 z 坐标,它包含了片段的实际深度值,此 z 坐标值是与深度缓冲区的内容进行比较的值。
  • 深度缓冲区中包含深度值介于 0.0 和 1.0 之间,物体接近近平面的时候,深度值接近 0.0,物体接近远平面时,深度接近 1.0。
  • (深度缓冲区的可视化)在片段着色器中将深度值转换为物体颜色显示:
#version 
  
 

    文章来源: blog.csdn.net,作者:╰つ栺尖篴夢ゞ,版权归原作者所有,如需转载,请联系作者。

    原文链接:blog.csdn.net/Forever_wj/article/details/125380201

    【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。