0

我在使用 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)。

4

1 回答 1

0

嘿,为了回答我自己的问题(并为有同样问题的其他人提供信息),光的位置存在问题(0、0、0、0)。将其设置为 (0, 0, -1.0, 0) 可以解决问题,并且不会干扰其他设备上的照明条件。我仍然不太明白我在这里做了什么,但我很高兴我可以提供对 iPhone 3Gs 的兼容性......

于 2010-08-06T20:12:46.967 回答