OpenGL实验1

编写一个完整的OpenGL 程序,要求:
(1) 创建一个宽度600,高度800,背景色为蓝色的窗口。
(2) 绘制一个红色三角形(10,10) (30,10) (20,20) 0 1 2 P P P ,居中显示。
(3) 单击鼠标右键,弹出一个颜色菜单(黑色、红色、蓝色、绿色、白色),并编写相应的菜单回调函数使其能够改变三角形的颜色。

#include <gl/glut.h>
static GLsizei iMode = 1;
void Initial(void)
{
		glClearColor(0.0f, 0.0f, 1.0f, 1.0f);      //设置窗口背景颜色为白色
		glMatrixMode(GL_PROJECTION);     //设置投影参数
		gluOrtho2D(0.0,40.0,0.0,30.0);   //居中显示.要根据三角形的三个顶点计算下
}

void Display(void)
{
		glClear(GL_COLOR_BUFFER_BIT);   //用当前背景色填充窗口

		switch(iMode)
		{
		case 1:
			glColor3f(0.0f,0.0f,0.0f);
			break;
		case 2:
			glColor3f(1.0f,0.0f,0.0f);
			break;
		case 3:
			glColor3f(0.0f,0.0f,1.0f);
			break;
		case 4:
			glColor3f(0.0f,1.0f,0.0f);
			break;
		case 5:
			glColor3f(1.0f,1.0f,1.0f);
			break;
		}

		glBegin(GL_TRIANGLES);
			glVertex2f(10,10);
			glVertex2f(30,10);
			glVertex2f(20,20);
		glEnd();

		glFlush();                         //处理所有的OpenGL程序
}


//处理菜单响应
void ProcessMenu(int value)
{
	iMode = value;
	glutPostRedisplay();
}

int main(int argc, char* argv[])
{
		glutInit(&argc, argv);
		glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);  //初始化窗口的显示模式
		glutInitWindowSize(600,800);                  //设置窗口的尺寸 600*800
		glutInitWindowPosition(600,120);               //设置窗口的位置
		glutCreateWindow("矩形");                    //创建一个名为矩形的窗口


		glutCreateMenu(ProcessMenu);
		glutAddMenuEntry("黑色",1);
		glutAddMenuEntry("红色",2);
		glutAddMenuEntry("蓝色",3);
		glutAddMenuEntry("绿色",4);
		glutAddMenuEntry("白色",5);
		glutAttachMenu(GLUT_RIGHT_BUTTON);//如果是左键就改成GLUT_LEFT_BUTTON,如果是中键就改成GLUT_MIDDLE_BUTTON


		glutDisplayFunc(Display);                     //设置当前窗口的显示回调函数
		Initial();                                    //完成窗口初始化
		glutMainLoop();                             //启动主GLUT事件处理循环
		return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值