В последнее время я изучаю OpenGL (Какао). И я столкнулся с проблемой здесь. Когда я пытаюсь инициализировать буфер глубины, компилятор возвращает GDB: Program received signal: "EXC_BAD_ACCESS".
Вот код:
-(id)init {
[super init];
[self initGL];
return self;
}
-(void)initGL {
glClearDepth( 1.0 ); // Depth buffer setup
glEnable( GL_DEPTH_TEST ); // Enable depth testing
glDepthFunc( GL_LEQUAL );
}
-(void) drawRect: (NSRect)bounds {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f, 1.33333f, 0.1f, 100.0f);
glTranslatef(-1.5f, 0.0f, -6.0f);
glRotatef(10, 1.0f, 0.0f, 0.0f);
glRotatef(10, 0.0f, 1.0f, 0.0f);
glRotatef(10, 0.0f, 0.0f, 1.0f);
glBegin( GL_TRIANGLES ); // Draw a triangle
glColor3f( 1.0f, 0.0f, 0.0f ); // Set color to red
glVertex3f( 0.0f, 1.0f, 0.0f ); // Top of front
glColor3f( 0.0f, 1.0f, 0.0f ); // Set color to green
glVertex3f( -1.0f, -1.0f, 1.0f ); // Bottom left of front
glColor3f( 0.0f, 0.0f, 1.0f ); // Set color to blue
glVertex3f( 1.0f, -1.0f, 1.0f ); // Bottom right of front
glColor3f( 1.0f, 0.0f, 0.0f ); // Red
glVertex3f( 0.0f, 1.0f, 0.0f ); // Top of right side
glColor3f( 0.0f, 0.0f, 1.0f ); // Blue
glVertex3f( 1.0f, -1.0f, 1.0f ); // Left of right side
glColor3f( 0.0f, 1.0f, 0.0f ); // Green
glVertex3f( 1.0f, -1.0f, -1.0f ); // Right of right side
glColor3f( 1.0f, 0.0f, 0.0f ); // Red
glVertex3f( 0.0f, 1.0f, 0.0f ); // Top of back side
glColor3f( 0.0f, 1.0f, 0.0f ); // Green
glVertex3f( 1.0f, -1.0f, -1.0f ); // Left of back side
glColor3f( 0.0f, 0.0f, 1.0f ); // Blue
glVertex3f( -1.0f, -1.0f, -1.0f ); // Right of back side
glColor3f( 1.0f, 0.0f, 0.0f ); // Red
glVertex3f( 0.0f, 1.0f, 0.0f ); // Top of left side
glColor3f( 0.0f, 0.0f, 1.0f ); // Blue
glVertex3f( -1.0f, -1.0f, -1.0f ); // Left of left side
glColor3f( 0.0f, 1.0f, 0.0f ); // Green
glVertex3f( -1.0f, -1.0f, 1.0f ); // Right of left side
glEnd();
glFlush();
}
Если я уберу 3 строки тестирования глубины, приложение откроется без проблем.