OpenGL照明

时间:2012-10-27 14:05:56

标签: c++ opengl

我试图弄清楚如何在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);

但是当我执行它时,只显示少量的环境光,就像方向上的光束一样。 我做错了什么?

1 个答案:

答案 0 :(得分:5)

OpenGL灯不会绘制“光束”,它们只是affect how geometry is lit

可见的“光束”(就像你在浓雾如云或轻云中有强烈的定向光时所看到的那样)通常被称为“光轴”。这是你想看到的那种效果吗?

http://developer.amd.com/media/gpu_assets/Mitchell_LightShafts.pdf


还要记住,旧的OpenGL 1照明模型是按顶点的。如果你将灯光指向平坦的表面,那么......

  • 将曲面细分为足够的顶点,使灯光形状可以很好地显示,
  • 在着色器中实现每像素着色。
相关问题