我想在我的环境中使用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。另外:对于聚光灯,位置上的最后一个元素不需要为零,并且GL_SPOT_CUTOFF需要小于90(对于light0,默认为180)。 – 2011-12-26 16:56:55
感谢您的回答。我编辑我的代码如下,但环境仍然很暗。我错过了什么? 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 2011-12-27 17:23:42