2012-02-22 8 views
0

を動作しません。そして私はここで問題に遭遇しました。私はデプスバッファを初期化しようとすると、コンパイラはGDB: Program received signal: "EXC_BAD_ACCESS".を返すコードは次のとおりです。なぜ、このデプスバッファの設定は、最近私は、OpenGL(ココア)を学習してきた

-(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行を削除した場合、アプリケーションがシームレスに開きます。 initGLが呼び出されたときに

答えて

0

現在行わOpenGLコンテキストはありますか?彼らは実際に属し、OpenGLのに初期化について何もないので - 最も簡単にこれは描画機能にinitですべてのコールを置くことによって、達成されます。本当にみんな

、あなたは簡単なアドバイスが世界のOpenGLの問題の80%が消滅するだろう描画機能で描画に関連するすべてを行うことを続くと思います。

ところで:あなたはまだ頂点の一部がニアクリッピング平面の前に出てくることを意味アイデンティティのモデルビュー行列、上で実行しているので、あなたのコードでは、唯一のクリッピングキューブを描画します。それがスカイボックスになるのは大丈夫です。

関連する問題