定义视窗大小的函数
glViewport (0, 0, w,
h);
(<—这玩意儿一定要记得后面两个参数是长和高,不是x,y坐标)
在自定义的mydisplay函数里面任意时刻开始编写。定义窗口位置数据从左下角开始(0,0),右上角结束
(参考链接glviewport)
从下图可以知道,无论如何扩大窗口,glviewport后的绘图代码,只在定义的左下角400x400区域绘制
这里可以设置矩阵模式:
glMatrixMode (GL_PROJECTION);
创建完视觉范围glviewport以后,在创建gluOrtho2D正交投影或者透视投影坐标之前,必须先装载单位矩阵,不然每次都会依照上一次运算完的矩阵叠加装载,在gl循环里面会不断更改视角,结果回悲剧。
glLoadIdentity ();
然后就是创建投影坐标:
gluOrtho2D (0, w, 0, h);
强制刷新命令
(参考链接: glFlush和glFinish以及SwapBuffer的用法)
OpenGL 绘图的机制是: 先用 OpenGL 的绘图上下文 Rendering Context (简称为 RC )把图画好,再把所绘结果通过 SwapBuffer() 函数传给 Window 的 绘图上下文 Device Context (简记为 DC).要注意的是,程序运行过程中,可以有多个 DC,但只能有一个 RC。因此当一个 DC 画完图后,要立即释放 RC,以便其它的 DC 也使用。
glViewport (0, 0,
在自定义的mydisplay函数里面任意时刻开始编写。定义窗口位置数据从左下角开始(0,0),右上角结束
(参考链接glviewport)
从下图可以知道,无论如何扩大窗口,glviewport后的绘图代码,只在定义的左下角400x400区域绘制

这里可以设置矩阵模式:
glMatrixMode (GL_PROJECTION);
创建完视觉范围glviewport以后,在创建gluOrtho2D正交投影或者透视投影坐标之前,必须先装载单位矩阵,不然每次都会依照上一次运算完的矩阵叠加装载,在gl循环里面会不断更改视角,结果回悲剧。
glLoadIdentity ();
然后就是创建投影坐标:
gluOrtho2D (0, w, 0, h);
强制刷新命令
(参考链接: glFlush和glFinish以及SwapBuffer的用法)