최근에 OpenGL (Cocoa)을 배웠습니다. 그리고 여기서 문제가 생겼습니다. 내가 깊이 버퍼를 초기화하기 위해서 시도 할 때, 컴파일러는 여기 GDB: Program received signal: "EXC_BAD_ACCESS".
를 반환하는 코드입니다 : 나는 깊이 테스트의 3 선을 제거하면이 깊이 버퍼 설정이 작동하지 않는 이유
-(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();
}
는 응용 프로그램이 원활하게 열립니다.