利用glut创建一个菜单主要包括创建菜单,创建菜单项,制定选择菜单项的鼠标按键等步骤
1、菜单注册函数:glutCreateMenu(ProcessMenu);用于创建一个弹出式菜单,它指定ProcessMenu作为菜单回调函数,
void ProcessMenu(int value);value确定用户选择菜单项的ID值,以进行相应的处理。
2、使用函数在菜单中加入菜单项:void glutAddMenuEntry(char *name,GLint value);参数name指定菜单项显示的名称,value指定菜单项对应的ID,当这个菜单项被选中时,这个ID会传给菜单回调函数。
3、将菜单与某个鼠标按键关联起来:void glutAttachMenu(button);参数button用符号常量GLUT_LEFT_BUTTON,GLUT_MIDDLE_BUTTON和GLUT_RIGHT_BUTTON指定鼠标的左键、中键和右键。
本想利用菜单实现矩形的橡皮筋技术,但是由于第一次接触这个,搞不出来。。。
参考此报告,顺利解决问题:http://www.docin.com/p-848199424.html
#include"gl/glut.h"static GLsizei iMode=1;int ipointnum=0;//已确定点的数目int x1=0,x2=0,y1=0,y2=0;//确定的点坐标int winWidth=400,winHeight=300;//窗口的宽度和高度int num=0,a[100],b[100],w1,h1,w2,h2;void Initial(void){ glClearColor(1.0f,1.0f,1.0f,1.0f);//设置窗口的背景颜色}void ChangeSize(int w,int h){ winWidth=w;winHeight=h;//保存当前窗口的大小 glViewport(0,0,w,h);//指定窗口显示区域 glMatrixMode(GL_PROJECTION);//指定设置投影参数 glLoadIdentity();//调用单位矩阵,去掉以前的投影参数设置 gluOrtho2D(0.0,winWidth,0.0,winHeight);//设置投影参数}void Display(void){ GLint i; glClear(GL_COLOR_BUFFER_BIT);//用当前背景色填充窗口 glColor3f(1.0f,0.0f,0.0f);//指定当前的绘图颜色 if(iMode==1) //绘制直线段 { glBegin(GL_LINES); glVertex2i(x1,y1); glVertex2i(x2,y2); glEnd(); } else if(iMode==2)//绘制折线 { glBegin(GL_LINE_STRIP); for(i=0;i