#include
#include
#include
static GLsizei iMode = 1;
void mydisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
switch(iMode){
case 1:
glColor3f(1.0, 0.0, 0.0);break;
case 2:
glColor3f(0.0, 0.0, 1.0);break;
case 3:
glColor3f(0.0, 1.0, 0.0);break;
case 4:
glClearColor(1.0, 1.0, 0.0, 1.0); break;
case 5:
glClearColor(0.0, 1.0, 1.0, 1.0); break;
case 6:
glClearColor(1.0, 0.0, 1.0, 1.0); break;
case 7:
glLineStipple(1,0xFFFF);break;
case 8:
glLineStipple(1,0xF0F0);break;
case 9:
glLineStipple(1,0x000F);break;
case 10:
glLineWidth(1);break;
case 11:
glLineWidth(2);break;
case 12:
glLineWidth(4);break;
case 13:
exit(0) ;break;
}
glBegin(GL_LINE_STRIP);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.6);
glVertex2f(0.9, 0.5);
glVertex2f(0.5, -0.5);
glVertex2f(-0.5, -0.5);
glEnd();
glFlush();
}
void init()
{
glClearColor (0.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
//glPointSize(3);
glLineWidth(4); //设置线的大小
glEnable(GL_POINT_SMOOTH); //反走样
glEnable(GL_LINE_STIPPLE); //启动下面的函数
glLineStipple(1,0x0F0F); //线段
}
void ProcessMenu(int value)
{
iMode = value;
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glPolygonMode(GL_FRONT,GL_FILL);
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("菜单");
int menu1= glutCreateMenu(ProcessMenu);
glutAddMenuEntry("红色",1);
glutAddMenuEntry("蓝色",2);
glutAddMenuEntry("绿色",3);
int menu2= glutCreateMenu(ProcessMenu);
glutAddMenuEntry("黄色",4);
glutAddMenuEntry("绿色",5);
glutAddMenuEntry("紫色",6);
int menu3= glutCreateMenu(ProcessMenu);
glutAddMenuEntry("直线",7);
glutAddMenuEntry("虚线1",8);
glutAddMenuEntry("虚线2",9);
int menu4= glutCreateMenu(ProcessMenu);
glutAddMenuEntry("线宽1",10);
glutAddMenuEntry("线宽2",11);
glutAddMenuEntry("线宽3",12);
int mainmenu = glutCreateMenu(ProcessMenu); //创建主菜单
glutAddSubMenu("颜色",menu1);
glutAddSubMenu("背景颜色",menu2);
glutAddSubMenu("线型",menu3);
glutAddSubMenu("线宽",menu4);
glutAddMenuEntry("退出",13);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutDisplayFunc(mydisplay);
init();
glutMainLoop();
return 0;
}