OpenGL深度测试及融合

该博客探讨了OpenGL中深度测试与透明物体融合的问题。深度测试在片段着色器后进行,通过比较片段深度值与深度缓冲区的值来决定是否丢弃片段。而融合则用于透明物体,允许透过透明物体看到后面的内容。文章分析了不同绘制顺序下,深度测试和融合如何影响最终显示效果,并提出了调整绘制顺序和控制深度测试写入两种解决方案。
摘要由CSDN通过智能技术生成

前言

在项目中遇到透明物体融合(blender)问题(如下图),原因是处于后边的透明如果在后绘制的情况下,会被深度测试无情的丢弃,因此重新梳理了一下深度测试和融合关系。用我自己的表述方式总结了此技术博文。
在这里插入图片描述

要点分析

  1. 深度测试(Depth testing)
    深度测试是在片段着色器之后进行的,当深度测试开启后,OpenGL会将片段存储的深度值与深度缓存Depth Buffer)存储的值进行对比,根据规则进行深度测试,如果测试通过,那么此片段的深度值将会保存在深度缓冲中,代替原来的深度值。如果深度测试失败了,该片段将会被丢弃。

  2. 融合(Blending)
    融合在深度测试之后进行,可以说针对的是透明物体,融合可以透过透明物体看到后边的物体,具体算法不在本文中具体分析。

  3. 多物体通过深度测试融合四种情况分析
    背景:大方块和小方块处于坐标(0,0,0)
    绘制顺序:透明大方块物体 不透明小方块
    在这里插入图片描述
    绘制顺序: 不透明小方块 透明大方块物体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值