gluLookAt の eyeZ 値に問題があります。
私が想像する方法は、カメラを遠くに移動して、視野内のオブジェクトを縮小するようなものです。
glDrawElements
0、0、0 が宇宙の中心である 100x100x100 オルソを使用して、3D 空間で単純な形状を描画する単純なセットアップがあります。オブジェクトは 0, 0, 0 にあります。
マウスホイールをスクロールすると、オブジェクトが遠ざかったり近づいたりするようにしようとしています。これが glulookat の呼び出し方です。
float eyeX = 0;
float eyeY = 0;
float eyeZ = differenceInMouseWheel();
float centerX = 0;
float centerY = 0;
float centerZ = 0;
float upX = 0;
float upY = 1;
float upZ = 0;
gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
ここで変わるのはeyeZだけです。
効果は奇妙です。約 10 秒間スクロールすると、オブジェクトの半分が突然消えます。そこからどんどん消えていきます。これはおそらく、カメラが 50 z の距離制限に向かっているためですが、オブジェクトが 3D 空間のようにスケーリングされない理由がわかりません。
センター値の仕組みを誤解しているのかもしれません。
私も適用しようとしdifferenceInMouseWheel()
ましcenterZ
たが、それは何も変わりませんでした.中心値は、gluが方向を取得できるようにするためのものであり、それ以上のものではないと仮定します.
多分アップベクトルは変わるべきですか?現時点ではわかりません。