OpenGL环境的配置及其一个测试Demo

//OpenGL----GLUT3.7和VS2012的配置过程如下所示:

1、下载需要的库文件 

下载  
2、解压后得到glut.lib和glut32.lib,复制到lib文件夹下 

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib 


3、将解压得到的头文件glut.h复制到如下目录下: 

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\GL 


4、将glut.dll和glut32.dll这两个动态文件放到操作系统目录下的C:\Windows\system32文件夹内(32位系统)或‪C:\Windows\SysWOW64(64位系统)

/*****************************************************************************************************
程序功能:
        验证OpenGl的环境是否搭建成功
开发环境:
       VS2012 + OpenGl(GLUT3.7) + OpenCv2.4.9 + Halcon10.0
时间地点:
       陕西师范大学----2016.9.29
作    者:
       九月
*****************************************************************************************************/
#include "stdafx.h"
#include
#include                                                 //OpenGl的头文件

using namespace std;

float red    = 0.0;                                                  //绘制颜色变量的定义                                            
float blue   = 0.0;
float green  = 0.0;

void InitScene()                                                     //初始化OpenGL的显示场景
{

}

void ChangeSize(int w,int h)                                         //OpenGL视区缩放
{
	GLfloat  fAspect;
	fAspect = (h==0)?1.0f:(GLfloat)w/h;
	glViewport(0,0,w,h);                                              //定义视区
	glMatrixMode(GL_PROJECTION);                                      //指定投影矩阵,定义修剪空间
	glLoadIdentity();                                                 //加载单位矩阵
	gluPerspective(45,fAspect,1,1000);                                //定义透视投影矩阵
	glMatrixMode(GL_MODELVIEW);                                       //指定模型视图矩阵
	glLoadIdentity();                                                 //加载单位矩阵
	gluLookAt(0.0,0.0,0.5,0.0,0.0,-1.0,0.0f,1.0f,0.0f);               //视图变换
}

void RenderScene(void)                                                //显示OpenGL场景
{
	static float angle = 0.0;                                         //旋转角度
	glClearColor(1.0,1.0,1.0,1.0);                                    //设置清楚缓冲区的颜色为白色
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);                 //清楚缓冲区
	glPushMatrix();                                                   //将当前矩阵压入堆栈
	glRotatef(angle,0.0,1.0,1.0);                                     //旋转矩阵
	glColor3f(red,green,blue);                                        //设置绘图颜色
	glutWireTeapot(1.5);                                              //绘制线框茶壶
	glPopMatrix();                                                    //将当前矩阵弹出堆栈
	glutSwapBuffers();                                                //交换缓冲区
	angle++;
}

void NormalKeyProc(unsigned char key,int x,int y)                     //处理ASCII生成键
{
	if(key==27)exit(0);                                               //按ESC退出程序
}
void SpecialKeysProc(int key,int x,int y)                             //处理非ASCII生成键
{
	switch(key)
	{
		case GLUT_KEY_F1:
	         {
				red   = 1.0;
				green = 0.0;
				blue  = 0.0;
				break; 
	         }
		case GLUT_KEY_F2:
			{
				red   = 0.0;
				green = 1.0;
				blue  = 0.0;
				break;
			}
		case GLUT_KEY_F3:
			{
				red   = 0.0;
				green = 0.0;
				blue  = 1.0;
				break;
			}
	}
}
/*******************************************【主程序Main函数】****************************************
*         控制台应用程序的入口
*****************************************************************************************************/
int _tmain(int argc, _TCHAR* argv[])
{
	printf("start glut\n");
	glutInit(&argc,(char**)argv);                                       //初始化GLUT库
	glutInitDisplayMode(GLUT_DEPTH|GLUT_DOUBLE|GLUT_RGBA);      //初始化显示模式
	glutInitWindowPosition(100,100);                            //初始化显示窗口的位置
	glutInitWindowSize(500,240);                                //创建一个大小为500*240的窗口
	glutCreateWindow("Teapot 3D");                              //创建一个窗口
	glutDisplayFunc(RenderScene);                               //注册显示响应函数
	glutIdleFunc(RenderScene);                                  //注册空闲响应函数
	glutReshapeFunc(ChangeSize);                                //注册窗口大小变化响应函数
	glutKeyboardFunc(NormalKeyProc);                            //注册ASCII按键响应函数
	glutSpecialFunc(SpecialKeysProc);                           //注册非ASCII按键响应函数
	InitScene();                                                //初始化OpenGL显示场景
	glutMainLoop();                                             //主循环处理
	return 0;
}




你可能感兴趣的:(OpenGL)