在OpenGL中,是否可能绘制一系列多边形而不检查深度(这样它们将始终在其他已绘制的多边形前面绘制,而与它们的z位置无关) 但同时,它们仍然写入深度缓冲区? 我想这是可以使用着色器实现的,但现在我无法访问它们。
严格来说(参考手册): 如果深度测试被禁用,则深度缓冲区不会更新。 但是...你可以启用深度测试而没有任何片段未通过测试:glDepthFunc(GL_ALWAYS); glEnable(GL_DEPTH_TEST); 当然,通过这样做,您会得到最后一个 Z,而不是最接近视图的 Z。
您只能通过两个步骤来实现这一点。第一步是仅使用颜色掩码填充深度缓冲区: glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 第二遍通行,您再次启用颜色写入,禁用深度测试,并按顺序渲染多边形序列。