有人能告诉我这段代码中的 if-else 语句有什么意义吗?它到底是做什么的? 尤其是在 glOrtho 中将高度除以宽度的部分。
*万一这个方法对任何人来说都是模棱两可的,这句话可能会有所帮助.. “这种 reshape 通过使视口(viewport)和世界窗口具有相同的纵横比来保留形状”
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 平面中边长为 100(世界空间单位)的正方形围绕选定的 XY 原点 (0,0) 适合窗口的短大小(这就是 if
用于决定窗口的两种尺寸中哪一种是短尺寸)。
关于c++ - openGl reshape 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929650/