私は OpenGL に非常に慣れていないので、ご容赦ください。:) 私は NeHe の OpenGL チュートリアルに取り組んでおり、独自のバージョンのレッスン 5 を開発しました。このバージョンでは、原点を中心に 3D 形状を回転させます。何が間違っていたのかわかりません。ほぼ行ごとにコードをコピーしましたが、表面に奇妙なオーバーラップが見られます。
このような問題の原因について何か提案はありますか?
私には、深度バッファを有効にしていないか、z バッファを使用してフレームバッファを作成していないように見えます。(これは、トルバドールが書いていることと似ています)
glEnable(GL_DEPTH_TEST);
深度バッファに問題があるようです。特に、深度に関係なく各ポリゴンが描画されているように見えます。つまり、ポリゴンからの各フラグメントは深度テストに合格しています。これは、ポリゴンがレンダリングされる順序に関係なく、単純に互いに重ねて描画されることを意味します。
次のような方法で深度バッファへの書き込みを無効にしましたか
glDepthMask( GL_FALSE )
もしかして?
そうでない場合は、各フレームの開始時に深度バッファーをクリアすることを覚えていましたか? Nehe のチュートリアルは
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
これにより、深度バッファとカラー バッファの両方がクリアされます。GL_DEPTH_BUFFER_BIT
その部分を取り除いていないことを確認してください。
HTH
うわー、1行で完全に修正しました:
gl.glEnable(GL.GL_CULL_FACE);
私はそれが何をするのか分かりませんが、私が使用したどのチュートリアルでも言及されていませんでしたが、私のデモは今では完全に動作します. それが何をしたかを理解するためにGoogleに行きましょう。:D