OpenGL + GLUT聚光灯

时间:2014-09-25 06:49:01

标签: c++ opengl textures glut lighting

我在创造一个漂亮的聚光灯时遇到了一些麻烦。到目前为止,我的照明属性是这样的:

    /* Spot light */
glEnable(GL_LIGHT1);
GLfloat ambientColor[] = {0.0f, 0.0f, 0.0f, 1.0f};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);

//Light
GLfloat lightColor0[] = {0.7f, 0.7f, 0.7f,0.0f};
GLfloat lightPos0[] = {0.0f, 3.0f, 0.8f, 0.0};
glLightfv(GL_LIGHT1, GL_SPECULAR, lightColor0);
glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor0);
glLightfv(GL_LIGHT1, GL_POSITION, lightPos0);

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 15.0);
GLfloat spot_direction[] = { 0.0, -1.0, 0.0 };
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction);
glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0);
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 2.0);

我得到各种各样的“聚光灯”......至少,它是一盏灯,位于我的场景之上并闪耀在物体上,但它不是(据我所知)出现在圆锥形中有点像。
这是我正在尝试制作的场景

Target Scene

这是我迄今为止所拥有的Result so far 我知道我的纹理也有点小问题,如果有人也可以提供帮助,那就太好了!

1 个答案:

答案 0 :(得分:2)

您的解决方案就在这里

C++ Opengl - lighting using spotlight

您需要将位置变量的最后一个值设为1.0,以使灯光成为聚光灯。