接上篇,glut也提供了用户与图形进行键盘交互的函数,其函数原型为:
void glutKeyBoardFunc(void * Func(unsigned char key,int x,int
y));
func为处理键盘消息的回调函数。第一个参数key对应按键的ASCII码。x,y则对应按键按下时候鼠标的位置。
在程序中我们绘制一个正方形,然后通过按下w,a,s,d操作方块移动。
在keyboard方法内通过switch来判断不同的按键消息,注意在函数最后需要调用glutPostRedisplay方法来立即重绘,否则图形变换也不会显示。
这里再强调下Reshape函数,其用于在窗口改变时保持图形相应尺寸的变换。
glOrtho2D(xmin,xmax,ymin,ymax)为裁剪窗口在世界坐标系的位置,其参数分别为x最小,x最大,y最小,y最大。这个函数通俗点的解释就是在3D空间截取了一个平面来显示。
glViewPort(startx,starty,width,height)为绘图区在窗口中显示的位置,其坐标以屏幕坐标系作为参考,参数分别表示绘图区在显示窗口的起点以及绘图的宽度和高度。
下图表示了通过键盘使得矩形移动。
矩形原始位置
矩形通过键盘向右移动