谁能告诉我这段代码中if-else语句的意义是什么?它到底是做什么的?
尤其是在glOrtho中将宽度除以高的部分。
*如果该方法对任何人都模棱两可,则此引用可能会有所帮助。
“此重塑通过使视口和世界窗口具有相同的宽高比来保留形状”
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-50.0, 50.0, -50.0*(GLfloat)h / (GLfloat)w,
50.0*(GLfloat)h / (GLfloat)w, -1.0, 1.0);
else
glOrtho(-50.0*(GLfloat)w / (GLfloat)h,
50.0*(GLfloat)w / (GLfloat)h, -50.0, 50.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
提前感谢!
最佳答案
本质上,这个想法是使投影保持正方形的长宽比(这是w
到h
的除法),并且在XY平面中以所选的XY原点为边长为100(世界空间单位)的正方形(0,0)适合窗口的短尺寸(这是if
的作用,用于确定窗口的两种尺寸中的哪一个是短尺寸)。