据我了解深度缓冲区,它计算片段与远/近裁剪平面的关系,并在写入之前从中推导出深度值。然而,这不是我想要的,因为我根本不使用剪裁平面或 3 维。但是,深度测试对我仍然有很大帮助。
我的问题,对于设置后渲染的所有几何体(通过 Alpha 测试),是否有任何方法可以手动指定将什么值写入深度缓冲区,而不管它的真实深度一个场景? Stencil 缓冲区以这种方式工作,其值指定为 glStencilFunc() 的第二个参数,因此我认为 glDepthFunc() 的行为可能类似,但我错了。
我需要在 2D 游戏中进行深度测试的主要原因是我的光照模型大量使用模板。必须首先渲染比光线更靠近相机的物体,以便正确布置阴影模板,然后再绘制灯光。这是一个非常棘手的绘制顺序,但基本上它只是意味着必须在场景绘制完成后绘制灯光,仅此而已。
我使用的 OpenGL 版本是 2.0,尽管我尽量避免使用片段着色器。
最佳答案
您似乎在谈论一种名为 Parallax scrolling 的技术.您不需要手动写入深度缓冲区,只需启用它,然后您就可以使用图层方法并为每个对象手动指定 Z。然后从前到后渲染场景(排序)。
关于c++ - OpenGL:指定将什么值写入深度缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113457/