我遇到OpenGL 1.1照明问题。我的代码适用于iPhone 4,但不适用于iPhone 3G。一切都显得不亮(平面颜色)。我没有3GS,所以我无法确定它是否适用于那个。
这是我的照明设置:
- (void)setupLighting
{
const GLfloat lightAmbient[] = {0.2, 0.2, 0.2, 1.0};
const GLfloat matAmbient[] = {0.6, 0.6, 0.6, 1.0};
const GLfloat matDiffuse[] = {1.0, 1.0, 1.0, 1.0};
const GLfloat matSpecular[] = {0.6, 0.6, 0.6, 0.1};
const GLfloat lightPosition[] = {0.0, 0.0, 0.0, 0.0};
const GLfloat lightShininess = 100.0;
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matAmbient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matDiffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matSpecular);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, lightShininess);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glShadeModel(GL_SMOOTH);
NSLog(@"Lighting sorted");
}
我提供了法向量等等,之后成功呈现在较新的iPhone上......但是,我真的很想支持所有三款iPhone。 (它也适用于iPad)。
答案 0 :(得分:0)
嘿,为了回答我自己的问题(并为其他任何有同样问题的人提供信息),灯光位置存在问题(0,0,0,0)。将其设置为(0,0,-1.0,0)可以解决问题并且不会干扰其他设备上的照明条件。我仍然不太明白我在这里做了什么,但我很高兴我可以提供iPhone 3Gs的兼容性......