【发布时间】:2018-05-17 13:19:54
【问题描述】:
我正在尝试在我的场景中应用灯光。 然而,所有物体都在极度反射,颜色会失真。
我怎样才能得到类似于这个例子的反射:
我认为我为材料选择了错误的值?
这是我设置灯光和材质的方式:
void createLight() {
GLfloat mat_specular[] = {0.3, 0.3, 0.3, 1.0};
GLfloat mat_shininess[] = { 1.0 };
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
// Lighting set up
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
// Set lighting intensity and color
GLfloat qaAmbientLight[] = {0.2, 0.2, 0.2, 1.0};
GLfloat qaDiffuseLight[] = {0.8, 0.8, 0.8, 1.0};
GLfloat qaSpecularLight[] = {1.0, 1.0, 1.0, 1.0};
glLightfv(GL_LIGHT0, GL_DIFFUSE, qaDiffuseLight);
glLightfv(GL_LIGHT0, GL_SPECULAR, qaSpecularLight);
// Set the light position
GLfloat qaLightPosition[] = {12, 8, 12, 0.4};
glLightfv(GL_LIGHT0, GL_POSITION, qaLightPosition);
}
【问题讨论】:
-
啊,是的,这成功了,太好了!!
标签: c++ opengl lighting opengl-compat