代码之家  ›  专栏  ›  技术社区  ›  mk12

OpenGL行为异常

  •  3
  • mk12  · 技术社区  · 15 年前

    -prepareOpenGL 方法:

    - (void)prepareOpenGL {
     GLfloat lightAmbient[] = { 0.5f, 0.5f, 0.5f, 1.0f };
     GLfloat lightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
     GLfloat lightPosition[] = { 0.0f, 0.0f, 2.0f };
    
     quality = 0;
     zCoord = -6;
    
     [self loadTextures];
    
     glEnable(GL_LIGHTING);
     glEnable(GL_TEXTURE_2D);
     glShadeModel(GL_SMOOTH);
     glClearColor(0.2f, 0.2f, 0.2f, 0.0f);
     glClearDepth(1.0f);
     glEnable(GL_DEPTH_TEST);
     glDepthFunc(GL_LEQUAL);
     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    
     glLightfv(GL_LIGHT1, GL_AMBIENT, lightAmbient);
     glLightfv(GL_LIGHT1, GL_DIFFUSE, lightDiffuse);
     glLightfv(GL_LIGHT1, GL_POSITION, lightPosition);
     glEnable(GL_LIGHT1);
    
     gameState = kGameStateRunning;
     int i = 0; // HERE ********
     [NSTimer scheduledTimerWithTimeInterval:0.03f target:self
               selector:@selector(processKeys) userInfo:nil repeats:YES];
    
     // Synchronize buffer swaps with vertical refresh rate
     GLint swapInt = 1;
     [[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
     // Setup and start displayLink
     [self setupDisplayLink];
    }
    

    int i = 0; (制造) // HERE ******* ),这使得灯光无法工作!当我把它拿走的时候,一切都很好,但是当我把它放回去的时候,一切都是黑暗的。有人能对此给出合理的解释吗?只需创建任何变量就可以做到这一点,即使已经声明了几个变量。

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  2
  •   mk12    15 年前

    GLfloat lightPosition[] = { 0.0f, 0.0f, 2.0f };
    

    我只有3个元素,而不是4个。我不知道为什么它在我没有的时候起作用 int i = 0; ,但当我向数组中添加0.0f时,一切正常。