OpenGL で視線を中心に回転するときの変形を防ぐにはどうすればよいですか?
解決
gluPerspective() を呼び出すときにアスペクトとして 1.0 を使用しているようです。幅/高さを使用する必要があります。たとえば、ビューポートが 640x480 の場合、アスペクト引数として 1.33333 を使用します。
他のヒント
OpenGL 仕様によると:
void gluPerspective( GLdouble fovy,
GLdouble aspect,
GLdouble zNear,
GLdouble zFar )
アスペクトはウィンドウの幅と高さの関数である必要があります。具体的には、幅を高さで割った値です(ただし、ゼロによる除算には注意してください)。
おそらく、ウィンドウが正方形でない限り正確ではないアスペクトとして 1 を使用しています。
gluPerspective 呼び出しのアスペクト パラメータを微調整する必要があるようです。見る マンページ. 。ウィンドウが物理的に正方形であれば、アスペクト比は 1 になり、問題は解決します。ただし、ウィンドウは長方形であるため、表示錐台は非正方形である必要があります。
アスペクト比を window_width / window_height に設定すると、楕円が正しく表示されるはずです。ウィンドウのサイズが変更されるたびにこれを更新する必要があることに注意してください。GLUT を使用している場合は、 グルグルリシェイプファンク そこで射影行列を再計算します。
所属していません StackOverflow