ほとんどの照明は思い通りに機能していますが、周囲の照明が完全に欠けているようです。つまり、物事の太陽から離れた側は完全に黒くなります (50% の周囲光を期待していました) が、太陽に向かう側は期待どおりに明るく見えます。
これが私の照明設定コードです(オリジナルから編集、以下の注を参照):
- (void) setupLighting
{
const float amb = 2.0;
const float LightAmbient[][4] = { { amb, amb, amb, 1.0f },
{ amb, amb, amb, 1.0f }
};
const float LightDiffuse[] [4] = { { 1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, 1.0f, 1.0f, 1.0f }
};
const float LightPosition[][4] = { { 1.0f, 4.0f, 2.0f, 0.0f },
{ 0.0f, 10.0f, 0.0f, 1.0f }
};
glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient[0]);
glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse[0]);
glLightfv(GL_LIGHT0, GL_POSITION, LightPosition[0]);
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient[1]);
// etc., snip -- no LIGHT1 for this round
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR);
//glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHT0);
//glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
}
(注: LIGHT1 は今のところコメントアウトされています。私は LIGHT0 に自分のやりたいことをさせようとしているだけです。)
問題があるかどうかはわかりませんが、glDrawArrays() を使用して、ユニットに合わせてテクスチャ マッピングされたユニット キューブ (MineCraft 風) を描いています。私の法線はすべて正しいようです。照明をオフのままにすると、すべてが正しく描画されます (フラット ライトのみ)。
ヒントはありますか?
ありがとう!
編集(スクリーンショットを追加)
編集 コメントごとに、アンビエント値を 2.0 まで上げましたが、今では約 50% のアンビエントに期待するもののように見えます。それは奇妙に思えます-照明の値が[0、1]に固定されていると思いました...?アンビエントライトについて理解していない基本的な概念は何ですか?