我在创建一个不错的聚光灯时遇到了一些麻烦。到目前为止,我的照明性能是这样的:OpenGL + GLUT聚光灯
/* 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);
我得到了各种各样的“聚光灯” ......至少,它是坐在我上面的场景照下来的物体光,但它没有(据我所知)出现在一个圆锥形的方式。
这是一幕我试图创建
这里是我到目前为止了。
我知道我的纹理也有一点buggered,如果有人可以帮助,那太棒了!
你的场景有多大?如果截止日期如此之大? – 2014-09-25 06:56:17
如何定义场景大小?不是截止值聚光锥的半径角度? – Finn 2014-09-25 07:36:41
你应该知道你的元素的位置,很可能。截止值是角度值...也许如果您将光线移动到较低位置或减少截止值,您将获得理想的效果。 – 2014-09-25 07:42:41