私はOpenGLSuperBible第4版を使用しています。背が高くて薄いウィンドウで、ビューポートがウィンドウのサイズと一致しているが、正方形のクリッピングボリュームにマップされている場合、画像が歪んで表示される(ビューポートのように背が高くて薄い)方法についての説明があります。
画像を正方形に保つための解決策は、次のコードです。
// Establish clipping volume (left, right, bottom, top, near, far)
aspectRatio = (GLfloat)w / (GLfloat)h;
if (w <= h)
glOrtho (-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0);
else
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0);
このコードには説明がありますが、理解できません。アスペクト比に従ってクリッピングボリュームの高さを拡張するのはなぜですか?