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