我试图弄清楚如何在OpenGL中使用Lighting引擎。 我的目标是在相机的方向模拟火炬。
gluLookAt( x, y, z,
x+lx, y+ly, z+lz,
0.0f, 1.0f, 0.0f);
GLfloat light_position[] = { x+1, y, z+1, 0.0f };
GLfloat light_direction[] = { x+lx,y+ly,z+lz};
GLfloat light_angle[] ={20};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION,light_direction);
glLightfv(GL_LIGHT0,GL_SPOT_CUTOFF,light_angle);
但是当我执行它时,只显示少量的环境光,就像方向上的光束一样。 我做错了什么?
答案 0 :(得分:5)
OpenGL灯不会绘制“光束”,它们只是affect how geometry is lit。
可见的“光束”(就像你在浓雾如云或轻云中有强烈的定向光时所看到的那样)通常被称为“光轴”。这是你想看到的那种效果吗?
http://developer.amd.com/media/gpu_assets/Mitchell_LightShafts.pdf
还要记住,旧的OpenGL 1照明模型是按顶点的。如果你将灯光指向平坦的表面,那么......