1

私は OpenGL に非常に慣れていないので、ご容赦ください。:) 私は NeHe の OpenGL チュートリアルに取り組んでおり、独自のバージョンのレッスン 5 を開発しました。このバージョンでは、原点を中心に 3D 形状を回転させます。何が間違っていたのかわかりません。ほぼ行ごとにコードをコピーしましたが、表面に奇妙なオーバーラップが見られます。

このような問題の原因について何か提案はありますか?

4

3 に答える 3

1

私には、深度バッファを有効にしていないか、z バッファを使用してフレームバッファを作成していないように見えます。(これは、トルバドールが書いていることと似ています)

glEnable(GL_DEPTH_TEST);
于 2009-09-26T19:18:07.763 に答える
0

深度バッファに問題があるようです。特に、深度に関係なく各ポリゴンが描画されているように見えます。つまり、ポリゴンからの各フラグメントは深度テストに合格しています。これは、ポリゴンがレンダリングされる順序に関係なく、単純に互いに重ねて描画されることを意味します。

次のような方法で深度バッファへの書き込みを無効にしましたか

glDepthMask( GL_FALSE )

もしかして?

そうでない場合は、各フレームの開始時に深度バッファーをクリアすることを覚えていましたか? Nehe のチュートリアルは

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

これにより、深度バッファとカラー バッファの両方がクリアされます。GL_DEPTH_BUFFER_BITその部分を取り除いていないことを確認してください。

HTH

于 2009-09-26T19:13:37.630 に答える
0

うわー、1行で完全に修正しました:

gl.glEnable(GL.GL_CULL_FACE);

私はそれが何をするのか分かりませんが、私が使用したどのチュートリアルでも言及されていませんでしたが、私のデモは今では完全に動作します. それが何をしたかを理解するためにGoogleに行きましょう。:D

于 2009-09-28T15:51:50.907 に答える