在OpenGL中,是否有可能绘制一系列不检查深度的多边形(因此它们将始终绘制在其前面绘制的其他多边形的前面,关于它们的z位置)
但同时,他们仍然写入深度缓冲区?
我认为这可以使用着色器,但是现在我无法访问它。
答案 0 :(得分:17)
严格来说(来自man page):
如果禁用深度测试,则不会更新深度缓冲区。
但是......你可以启用深度测试,而没有任何片段未通过测试:
glDepthFunc(GL_ALWAYS);
glEnable(GL_DEPTH_TEST);
当然,你通过这样做得到最后的Z,而不是最接近视图。
答案 1 :(得分:4)
你只能用两次传球来达到目的。第一个是仅使用颜色掩码填充深度缓冲区:
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
再次启用颜色书写,禁用深度测试并按顺序渲染多边形序列。