0
我想在opengl中設置一個簡單的方向燈。我的場景初始化代碼:Opengl光線方向
float light_position[] = { 0, -1,0, 0.0f };
float light_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f };
float light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float mat_ambient[] = { 1.0f, 0.0f, 0.0f, 1.0f };
float mat_diffuse[] = { 0.0f, 1.0f, 0.0f, 1.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
然後,我只是呈現一個三角形:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
glBegin(GL_TRIANGLES);
glNormal3f(0,1,0);
glVertex3f(0,-1,-2.0f);
glNormal3f(0,1,0);
glVertex3f(-1,-1,-1);
glNormal3f(0,1,0);
glVertex3f(1,-1,-1);
glEnd();
我只是光像太陽,從上往下(朝Y軸負無窮大)閃耀,所以我的三角形應該是黃色的(紅色環境材料+綠色漫反射),但我的三角形是紅色的,就像沒有任何光。如果我將燈光位置更改爲{0,1,0,0},則三角形變爲黃色。爲什麼?光線方向是從設置爲(0,0,0)的位置開始的?
那麼光線總是朝着(0,0,0)閃耀,從它的位置? – gberes
是的,這是正確的。除非您指定另一個方向(例如用於投射燈) –
否,從其位置到處都有一盞燈。 – pete