私の環境ボックスにC++を使ってOpenGLで街灯を作成しようとしています。私はスポットライトを作成する必要がありますが、私は以下のコードを書いていますが、スポットライトとしては機能しません。私は間違って何をしているのですか、私の問題に対して他の解決方法がありますか?OpenGLで街灯を作成する
GLfloat ambientLight[] = {0.7f, 0.2f, 0.2f, 1.0f};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
GLfloat directedLight[] = {0.7f, 0.7f, 0.7f, 1.0f};
GLfloat directedLightPos[] = {-10.0f, 15.0f, 20.0f, 0.0f};
glLightfv(GL_LIGHT0, GL_DIFFUSE, directedLight);
glLightfv(GL_LIGHT0, GL_POSITION, directedLightPos);
ありがとうございます。
+1。また、最後の要素はスポットライトの場合は0でなくてもよく、GL_SPOT_CUTOFFは90より小さい必要があります(light0の場合はデフォルトで180)。 –
あなたの答えをありがとう。私は以下のように自分のコードを編集しましたが、環境はまだ暗いです。私は何が欠けていますか? glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); GLfloat spotLightColour [] = {1.0,0.0,1.0}; GLfloat spotlightDirection [] = {0.0、-1.0,0.0}; GLfloat directedLightPos [] = {100.0f、100.0f、100.0f、10.0f}; glLightf(GL_LIGHT0、GL_SPOT_CUTOFF、45); glLightfv(GL_LIGHT0、GL_SPOT_DIRECTION、spotlightDirection); glLightfv(GL_LIGHT0、GL_POSITION、directedLightPos); glLightfv(GL_LIGHT0、GL_SPECULAR、spotLightColour); glLightf(GL_LIGHT0、GL_SPOT_EXPONENT、120); – goncag