0

openGL を使用して簡単な描画を作成しようとしています。ただし、深度バッファは機能していないようです。

同様の問題を抱えている他の人々は、通常、次の2つのいずれかを間違っています。

  1. glEnable(GL_DEPTH_TEST) を含まない

  2. 不適切なクリッピング値

ただし、私のコードにはこれらの問題はありません。

...
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

gluPerspective(25.0,1.0,10.0,200.0);

// Set the camera location
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(20.0, 10.0, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

// Enable depth test
glEnable(GL_DEPTH_TEST);

// Cull backfacing polygons
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE)

drawCoordinateAxis();

drawBox(5.0,2.0,5.0,0.8,0.0,0.0);

glTranslated(1.0,-1.0,1.0); //The box is 5x2x5, it is shifted 1 unit down and 1 in the x and z directions
drawBox(5.0,2.0,5.0,0.0,1.0,1.0);
...

コードを実行すると、これが描画されます。 http://imgur.com/G9y41O1

青いボックスと赤いボックスが衝突するため、赤いボックスが青いボックスの一部を覆っていることに注意してください。

関数 drawCoordinateAxis() および drawBox() は、いくつかのプリミティブを描画するだけで、内部には特別なものはありません。

これを Debian スクイーズで実行しています。

4

1 に答える 1

1
void reshape(GLint width, GLint height)
{
   g_Width = width;
   g_Height = height;
   glViewport(0, 0, g_Width, g_Height);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(65.0, (float)g_Width / g_Height, g_nearPlane, g_farPlane);
   glMatrixMode(GL_MODELVIEW);
}

したがって、最初にMatrix ModeをGL_PROJECTIONに設定し、次にgluPerspective ....を設定してから、MODELVIEWモードに戻ります。

于 2013-01-31T04:52:45.567 に答える