OpenGL新手问题:什么是背面剔除?

fhu*_*cho 15 opengl

究竟什么是OpenGL的背面剔除?你能给一个特定的例子,例如一个三角形吗?

Eri*_*ert 16

如果仔细观察,可以在很多视频游戏中看到这方面的例子.任何时候,相机意外移动通过一个对象-通常是一个移动的物体,像人物-公告天下如何继续正确地呈现.那是因为形成角色皮肤的三角形的背面不会被渲染; 它们实际上是透明的.如果不是这种情况,那么每当相机意外地移动到物体内时,屏幕就会变黑(因为物体的内部没有点亮),或者你会对物体的外观看起来像是一个奇怪的视角.从内到外.


Chr*_*isF 12

背面剔除是指远离相机/视点的三角形不被考虑用于绘制的地方.

维基百科将此定义为:

它是图形管道中的一个步骤,用于测试投影到屏幕上时多边形中的点是以顺时针还是逆时针顺序显示.如果用户指定前置多边形具有顺时针缠绕,如果投影在屏幕上的多边形具有逆时针缠绕,则它已被旋转以面向远离相机并且不会被绘制.

其他系统使用面法线并使用视图方向做点积.

这是决定是否绘制三角形的相对快速的方法.考虑一个立方体.在任何时候,立方体的侧面中的3个将面向远离用户并因此不可见.即使这些被绘制,它们也会被三个"向前"面对面遮挡.通过执行背面剔除,您可以减少从12到6(每边2个)绘制的三角形数量.

背面剔除最适用于封闭的"实心"物体,如立方体,球体,墙壁.

有些系统没有这个,因为他们认为面是双面的,因此可以从任一方向看到.