在OpenGL中不使用深度测试写入深度缓冲区(非着色器)

8

在OpenGL中,是否可能绘制一系列多边形而不检查深度(这样它们将始终在其他已绘制的多边形前面绘制,而与它们的z位置无关)

但同时,它们仍然写入深度缓冲区?

我想这是可以使用着色器实现的,但现在我无法访问它们。

2个回答

19

严格来说(参考手册):

如果深度测试被禁用,则深度缓冲区不会更新。

但是...你可以启用深度测试而没有任何片段未通过测试:

glDepthFunc(GL_ALWAYS);
glEnable(GL_DEPTH_TEST);

当然,通过这样做,您会得到最后一个 Z,而不是最接近视图的 Z。


4

您只能通过两个步骤来实现这一点。第一步是仅使用颜色掩码填充深度缓冲区:

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);

第二遍通行,您再次启用颜色写入,禁用深度测试,并按顺序渲染多边形序列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接