Opengl behaves strangely

OpenGL is acting very strange for some reason. In my subclass of NSOpenGLView, I have the following code in a method -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];
}

, ivar, , ​​( ), , ( , [NSTimer scheduleTimer...), OpenGL , . , . , int i = 0; (maked // HERE *******), ! , , , . - ? , .

.

+3
1

, . :

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

3 4. , , int i = 0;, 0.0f , .

+2

Source: https://habr.com/ru/post/1748697/


All Articles