2

Java OpenGL シーンにテクスチャを入れようとしていますが、そうすると、色が正しくブレンドされていないかのように、他のものの色が歪んでしまいます。OpenGL には LWJGL を使用し、テクスチャのロードには Slick を使用しています。呼び出しをコメント解除するGL11.glEnable(GL11.GL_TEXTURE_2D);と色が暗くなりますが、1行コメントすると色は正しいですが、明らかにテクスチャがありません。

私は自分のコードをここに置いていますhttp://codepaste.net/26bguu

問題の行は63行目です

私が見つけた回避策の 1 つは、テクスチャを描画する直前にテクスチャを有効にし、その後すぐに無効にすることです。しかし、これは不要であるべきだと思います。以下は、私が何を意味するかを示すスクリーンショットです。唯一の違いは、1 行がコメントされているかコメントされていないかということです。

テクスチャが有効になっていない場合。 すべての色が明るいです。

テクスチャが有効になっています。 すべての色が濃くなります。

4

1 に答える 1

4

実際には、必要に応じて有効化および無効化するGL_TEXTURE_2D必要があります。

が有効な場合GL_TEXTURE_2D、GL は (通常)指定した頂点の色を無視し、代わりに指定されたテクスチャ座標を指定されたテクスチャにマップして、各フラグメント/ピクセルの色を取得します。テクスチャ座標を渡さないと、投稿した 2 番目のスクリーンショットのように、何かが起こる可能性があります。

各「オブジェクト」を描画する準備をするために、20 回以上の opengl 呼び出しを行う必要があることは珍しくありません。これが、OpenGL プログラマーが大量の三角形を 1 つのバッファーに結合して 1 回の描画呼び出しで一度に描画することに多大な時間を費やす理由です。これにより、パフォーマンスが大幅に向上します。

于 2012-04-04T15:17:13.783 に答える