在OpenGL中,您只能绘制背面多边形,只能绘制正面多边形或两者。如果渲染流形三角形网格,则清除帧缓冲区但不清除深度缓冲区,然后再次仅渲染背面多边形。期待看到什么?
我认为给出的以下答案是错误的:
你应该看到背面 三角形。第一个渲染过程将 导致深度缓冲区具有 三角形的深度值 正面。第二个渲染过程 你正在渲染背面 三角形,因此有那些 最大的深度值。每个三角形 光栅化的将有其深度 值与当前深度相比较 该像素的值。自深度 缓冲区设置为所有最接近的深度 值(小值)但是 区分最远的深度 背面的值(大值) 三角形将被渲染。“
但我认为答案是:
由于深度缓冲区未被清除,并且仍然包含前置三角形的深度值,它将抛出面向后方的三角形,并且不显示任何内容。
哪个答案是对的?
答案 0 :(得分:1)
这取决于!假设网格是一个二维流形的对象(即拓扑相当于表面上任意点周围足够小的区域上的平面),并且第一遍渲染前后三角形或仅前向三角形,深度函数是GL_LESS或GL_LEQUAL,然后第二段是正确的,因为前面的三角形总是在面向后的三角形的前面,因此总是会导致深度测试失败。
当然,如果您使用GL_GREATER或GL_GEQUAL作为深度函数,则反之亦然,因此第一段是正确的。
答案 1 :(得分:0)
我认为第二段是假的。
想象一下Moebius乐队是一个封闭的流形。你可以清楚地看到一些靠近眼睛的背面三角形(白色,正面为黑色)。在第二遍中,他们将通过深度测试并呈现: