【发布时间】:2016-01-08 17:46:42
【问题描述】:
我正在使用鼠标功能在屏幕上绘制正方形,以及我从屏幕上收集的坐标。坐标在 OpenGL 程序正在运行的窗口的像素范围内。因此,为了避免将像素转换为 x 和 y 轴的 -1 到 1 的 opengl 坐标系,我使用了:
glOrtho(0,g_width,0,g_height,0,2200);
在哪里
0,g_width
是绘图坐标的左右值,
0,g_height
是绘图坐标的底部和顶部值, 我相信
0,2200
是要绘制到的坐标的最小值和最大值。
这是我的重塑功能:
void resize(GLsizei w, GLsizei h){
cout << "Resize..." << endl
<< "W: " << w << endl
<< "H: " << h << endl;
g_width = w;
g_height = h;
glViewport(0,0,g_width,g_height);
glOrtho(0,g_width,0,g_height,0,2200);
cout << "Ortho called" << endl;
}
我从函数中获取当前的宽度和高度,我测试了它是否适用于我留下的打印语句,它可以在我缩小或拉伸窗口时工作,但效果似乎没有改变我可以改变的区域在此代码实例中,当我将屏幕拉伸到任何方向时,我无法再在屏幕上绘制正方形,但如果我将其保留在我定义的原始 700*700,它将按照我定义的方式工作。但是 reshape 方法不适用于新的宽度和高度。
有什么想法吗?
【问题讨论】: