1

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

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

4

1 回答 1

5

OpenGL 灯光不会绘制“光束”,它们只会影响几何体的光照方式

可见的“光束”(就像你在浓密的空气中看到的强定向光,如雾或轻云)通常被称为“光轴”。这是您希望看到的效果吗?

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


还要记住旧的 OpenGL 1 光照模型是逐顶点的。如果您将光线引导到平坦的表面上,那么要么..

  • 细分曲面以具有足够的顶点以使灯光形状清晰可见,
  • 在着色器中实现逐像素着色。
于 2012-10-27T14:10:20.127 回答