Tim*_*dge 10
背面剔除是指OpenGL确定哪些面背向观察者,因此是看不见的.想想一个立方体.无论你如何旋转立方体,3个面总是不可见的.弄清楚这些面临哪些面,将其从要绘制的多边形列表中删除,然后将绘图列表减半.
深度缓冲非常简单.对于绘制的每个多边形的每个像素,将其z值与z缓冲区进行比较.如果它小于z缓冲区中的值,则将z缓冲区值设置为新的z缓冲区值.如果没有,丢弃像素.深度缓冲提供了非常好的结果,但可能相当慢,因为每个像素都需要值查找.
实际上,这两种方法之间没有任何相似之处,它们通常都被使用.给定一个立方体,您可以先使用剔除切出一半多边形,然后使用z缓冲绘制它们.
剔除可以减少渲染的多边形,但它不是排序算法.这就是Z缓冲.
给定的三角形有两个面,即正面和背面.您正在查看的一侧取决于点在顶点列表中出现的顺序(也称为绕组).通常,三角形列表具有交替缠绕,因此您可以重复使用前两个点,但条带中给定三角形的面对不会交替.背面剔除是优化步骤,其中从要绘制的三角形列表中移除场景中远离视图的三角形.
深度缓冲区(z缓冲区)用于挂起已经渲染的最接近的东西(深度相对于视图).如果绘图列表中下一个出现的东西是我已经绘制过的东西(也就是说,它的深度远远超出它),我可以跳过它,因为它被阻挡了.如果要绘制的新东西更接近,我绘制它并使用新的更接近的值更新深度缓冲区.