|
|
我在程序里使用了OPENGL聚光灯
float light_ambient[] = {0.9,0.9,0.9,1.0};
float light_diffuse[] = {1.0,1.0,1.0,1.0};
float light_specular[] = {1.0,1.0,1.0,1.0};
float light_position[] = {0.0,2.0,0.0,1.0};
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
float spot_direction[] = {0.0,-1.0,0.0};
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spot_direction);
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0);
glEnable( GL_LIGHTING );
glEnable(GL_LIGHT0);
并画了一个正方形:
glBegin(GL_POLYGON);
glVertex3f(-4.0f,0.0f ,4.0f);
glVertex3f(4.0f,0.0f, 4.0f);
glVertex3f(4.0f,0.0f,-4.0f);
glVertex3f(-4.0f,0.0f,-4.0f);
glEnd();
可是当我用gluLookAt(x,1.7f,z,x+h,1.7f,z+v,0.0f,1.0f,0.0f);移动观察点时,聚光灯打在正方形上的光斑随着观察点的变化时有时黑,完全不符合物理规律,而我以前在D3d下做聚光灯就没有出现这种问题.请教各位能否帮我解答多谢了.另外如果GL里要使用阴影该如何实现.GL自己是否就支持阴影渲染. |
|