1

OpenGL でライティング エンジンを使用する方法を理解しようとしています。私の目的は、カメラの方向にトーチをシミュレートすることです。

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 に答える