1

下の画像からわかるように、2つの三角形が並んでいます(正面から見た場合)。しかし、右から見ると、黄色の三角形は緑色の三角形の前にあるように見えますが、緑色の三角形の後ろにあるため表示されないはずです(右の図を参照)。なぜこれが発生するのでしょうか。左から見ると問題ありません(左の図を参照)。ありがとう。

正面図:

正面図

右側面図(黄色の三角形がまだ表示されているのはなぜですか?):

ここに画像の説明を入力してください

左側面図(ここからの表示で問題ありません):

ここに画像の説明を入力してください

これが私のレンダリングメソッドです。私はglColor4fを使用せず、現代的な方法で色付けを行っていますが、それでも同じ結果が得られます。glEnable(GL_DEPTH);も設定しました。およびglDepthFunc(GL_LESS);

void display(){
glClear(GL_COLOR_BUFFER_BIT);

control(0.2, 0.2, mi);
view = updateCam();

glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);

model = glm::rotate(glm::mat4(1.0), 45, glm::vec3(0, 1, 0));
glColor4f(0, 1, 0, 1);
glDrawArrays(GL_TRIANGLES, 0, 3);
resetMatrix();

model = glm::translate(glm::mat4(1.0), glm::vec3(5, 0, 0));
model = glm::rotate(model, 45, glm::vec3(0, 1, 0));
glColor4f(1, 1, 0, 1);
glDrawArrays(GL_TRIANGLES, 0, 3);

glDisableVertexAttribArray(0);
resetMatrix();
SDL_GL_SwapBuffers();

}

4

1 に答える 1

1

カラーバッファをクリアするだけです。デプスバッファには前のフレームのデプス値がまだ含まれているため、Zテストは意図したとおりに機能しません。

両方をクリアします。

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
于 2012-11-18T07:42:10.497 に答える