1

テクスチャマッピングされたオブジェクトに対して鏡面ハイライトを取得しようとしています。私の知る限り、OpenGLがテクスチャカラー(たとえば、プレーンホワイト)よりも最終的なカラーを計算しない唯一の直接的な方法は、呼び出しglLightModelf(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR)を使用することですが、OpenGLESではサポートされていません。

だから、どうすればこれを行うことができますか?スペキュラーハイライトに別のテクスチャを使用する必要がありますか?別の簡単な方法はありますか?

あなたより!

PS私はOpenGLES1.xを使用しています

4

2 に答える 2

1

素晴らしい提案をありがとう、彼らは私の日を救った。唯一の問題はちらつきでした。デプスバッファと制限されたデプス解像度に問題があると最初に思いましたが、そうではありませんでした。gl.glDepthFunc(GL10.GL_ALWAYS);を使用する必要がありました。完璧なブレンドのために。ただし、複雑なプリミティブの場合は、オブジェクトを通して見ることができます。

もう1週間プレイした後、ブレンドを行うときに深度テストを無効にし、各パスでオブジェクトをレンダリングする順序を単純に処理する必要があると考えました。通常、近いオブジェクトを描画する前に、遠いオブジェクトのすべてのレンダリングパスを終了する必要があります。これは私が完全に持っていたちらつきの問題の世話をします。

于 2012-08-02T23:37:19.647 に答える
1

1つの回避策は、2つのパスで実行することです。最初のパスはアンビエントライトと拡散照明でテクスチャをレンダリングし、2番目のパスはその上にスペキュラハイライトをレンダリングします(テクスチャリングを有効にしないで)。

于 2012-03-04T19:34:15.213 に答える