2.44
#include<gl/glut.h>
#define RED 1#define GREEN 2
#define BLUE 3
#define WHITE 4
#define yyy 5
float angle=0.0; //三角形旋转角
float red=1.0,blue=1.0,green=1.0;
void myDisplay(void) //画三角形的回调函数
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(angle,0.0,1.0,0.0); //绕y轴旋转angle度角
glColor3f(red,green,blue); //改变三角形的颜色
glBegin(GL_TRIANGLES); //画三角形
glVertex3f(-0.5,-0.5,-0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
angle++;
glutSwapBuffers(); //实现双缓冲
}
void processMenuEvents(int option)
{ //鼠标的旋转改变颜色
switch(option)
{
case RED:red=1.0;green=0.0;blue=0.0;break;
case GREEN:red=0.0;green=1.0;blue=0.0;break;
case BLUE:red=0.0;green=0.0;blue=1.0;break;
case WHITE:red=1.0;green=1.0;blue=1.0;break;
case yyy: red=1.0;green=1.0;blue=0.0;break;
default:
break;
}
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH|GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("Menu Test"); //打开一个OpenGL窗口
glutDisplayFunc(myDisplay); //注册显示窗口
glutIdleFunc(myDisplay); //设置全局的回调函数,程序空闲时调用 myDisplay
//调用函数创建菜单
//右击鼠标激活函数
//创建菜单并关联菜单事件
glutCreateMenu(processMenuEvents);
glutAddMenuEntry("RED",RED);
glutAddMenuEntry("Blue",BLUE);
glutAddMenuEntry("Green",GREEN);
glutAddMenuEntry("White",WHITE);
glutAddMenuEntry("ddd",yyy);
glutAttachMenu(GLUT_RIGHT_BUTTON);//鼠标右键
glutMainLoop();
}