我正在阅读 OpenGL SuperBible 第 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);
这段代码有一个解释,但我就是无法理解。为什么我们要根据 aspectRatio 来扩展裁剪体积的高度?