0

OpenGL1.1の照明に問題があります。私のコードはiPhone4で動作しますが、iPhone3Gでは動作しません。すべてが消灯しているように見えます(フラットカラー)。私は3GSを持っていないので、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で正常にレンダリングします...ただし、3つのiPhoneすべてをサポートしたいと思います。(iPadでも動作します)。

4

1 に答える 1

0

ええと、私自身の質問に答えるために(そして同じ問題を抱えている他の人に情報を提供するために)、ライトの位置が(0、0、0、0)であることに問題がありました。(0, 0, -1.0, 0) に設定すると、問題が修正され、他のデバイスの照明条件が妨げられなくなりました。ここで何をしたかはまだよくわかりませんが、iPhone 3G に互換性を提供できることをうれしく思います...

于 2010-08-06T20:12:46.967 に答える