OpenGL - GL_FRONT与GL_FRONT_AND_BACK

Dre*_*kes 3 opengl

我正在修补一个使用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)

所以我的问题是,这有什么区别?在什么情况下它看起来会有所不同,如果我的音量被所有法线向外指出,是否有任何性能差异?

Tha*_*tos 7

一个设置正面和背面的材料,另一个设置正面.如果你剔除背面,这并不重要.如果你没有剔除背面,那么,你只能看到正面的材料.

如果您正在封闭一个音量,您可能不会直接看到背面 - 如果相机在音量范围内,则唯一的方法就是这样.如果它在外面,那么你将永远不会看到背面,并且渲染它们没什么意义.(这就是为什么在许多游戏中,如果你强迫相机进入一个物体,它看起来就像所有的多边形都是单面的:那就是背面剔除)OpenGL只能为前面和后面设置不同的属性三角形/四边形等.

  • 从性能的角度来看,您应该完全跳过使用glMaterialfv.它来自旧的固定功能管道,现已弃用.看看使用着色器. (2认同)