我正在修补一个使用OpenGL进行3D渲染的开源项目。在材料的构造中,我看到如下代码:
// set ambient material reflectance
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mAmbient);
在其他示例中,使用了:
glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient);
所以我的问题是,这有什么区别?在什么情况下它看起来会有所不同,如果我的音量被所有法线向外指出,是否有任何性能差异?
答案 0 :(得分:7)
一个设置正面和背面的材质,另一个设置正面。如果你剔除背面,这并不重要。如果你没有剔除背面,那么,你只能看到正面的材料。
如果您正在封闭一个音量,您可能不会直接看到背面 - 如果相机在音量范围内,则唯一的方法就是这样。如果它在外面,那么你将永远不会看到背面,并且渲染它们没什么意义。 (这就是为什么在很多游戏中,如果你强迫相机进入一个物体,它看起来就像所有的多边形都是单面的:那是背面剔除)OpenGL只能为前后面设置不同的属性三角形/四边形等等。