1

私のコードは、鏡面反射光コンポーネント以外のすべてに対して機能します。

glEnable(GL_COLOR_SUM);
...
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, color);
glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
glSecondaryColorPointer(3, GL_UNSIGNED_BYTE, 0, specular);
...
glDrawArrays(D3DPT_TRIANGLELIST, 0, 2);

鏡面反射を無視しているように見えますが、色、テクスチャ座標、位置などはすべて完全に問題ありません。

これはライトとマテリアルを使用していません。固定頂点パイプライン。残念ながら、現時点ではシェーダーはオプションではありません。

glGetError() は、どの時点でもエラーを報告しません。

4

1 に答える 1

1

あなたが言った:

これはライトとマテリアルを使用していません。

鏡面反射光は、それを取得するライトがある場合にのみ計算できます。(必要に応じて、その背後にある数学に入ることができます...)

http://en.wikipedia.org/wiki/Specular_highlightから:

スペキュラ ハイライトは、照らされたときに光沢のあるオブジェクトに現れる明るいスポットです。

ちなみに、D3DPT_TRIANGLELIST は OpenGL コードで何をしているのですか? それは質問の単なる間違いですか、それとも実際にそのように機能しますか?

于 2012-07-30T17:00:27.453 に答える