Win7 x64 vc6.0下配置OpenGL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljheee/article/details/73744369

        OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。

        GLUT库是一个与窗口系统无关的工具包, OpenGL主要包括三个函数库,它们是核心库、实用函数库和编程辅助库。核心库中包含了OpenGL最基本的命令函数。

        核心库提供了一百多个函数,这些函数都以”gl”为前缀,用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。实用函数库是比核心库更高一层的函数库,它提供四十多个函数,这些函数都以”glu”为前缀。由OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。

一、VC 6.0 安装GLUT库

1、下载GLUT库:http://download.csdn.net/detail/ljheee/9881219

       解压后包含5个文件:glut.dll、glut.h、glut.lib、glut32.dll、glut32.lib。
2、 将压缩包内的glut.h复制到C:\Program Files\Microsoft Visual Studio\VC98\Include\GL目录下。

3、将glut32.lib复制到C:\Program Files\Microsoft Visual Studio\VC98\Lib目录下。
4、将glut32.dll复制到系统盘(我的是C盘)C:\Windows\System32目录下。如果是Windows 64位的机器,还需要将glut32.dll复制到C:\Windows\SysWOW64目录下,否则报错。

提示:Windows 32机器下,就按1-4步安装,64位机器需要在C:\Windows\SysWOW64目录下放一个glut32.dll。具体VC6.0安装路径按自己实际复制过去。

二、设置GLUT库

1、打开VC6.0,新建一个Win32  Console Application工程,工程下新建一个.c源文件,这样我们就建立了一个Win32的空工程。

2、在VC6.0工具栏依次:

          选择 Proejct—>Settings
          选择 LINK 选项卡
          添加一下文件到 Object/library: opengl32.lib  glut32.lib  glu32.lib  (两者间通过空格分隔)

3、点击OK就完成了的基本配置。

复制下面源码到新建的.c源文件,编译即可运行。

#include <gl/glut.h>
static GLsizei iMode=1;  //选定的菜单项	
static GLfloat xRot=0.0f; //x方向旋转参数
static GLfloat yRot=0.0f; //y方向旋转参数
GLUquadricObj *obj; //二次曲面对象
void Initial(void)
{
    glClearColor(1.0f,1.0f,1.0f,1.0f);
    glColor3f(0.0f,0.0f,0.0f);
    obj=gluNewQuadric(); //激活二次曲面绘制器
    gluQuadricDrawStyle(obj,GLU_LINE);  //已选框方式绘制二次曲面对象
}
void ChangeSize(int w,int h)
{
    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-1.5f,1.5f,-1.5f,1.5f);
}
void Display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW); //指定设置模型视图变换参数
    glLoadIdentity(); //消除以前的变换
    glRotatef(xRot,1.0f,0.0f,0.0f); //绕x轴旋转图形
    glRotatef(yRot,0.0f,1.0f,0.0f); //绕y轴旋转图行
    switch(iMode)
    {
		case 1:
			glutWireTetrahedron();
			break;  //绘制线框正四面体
		case 2:
			glutSolidTetrahedron();
			break;  //绘制实体正四面体
		case 3:
			glutWireOctahedron();
			break;  //绘制线框正八面体
		case 4:
			glutSolidOctahedron();
			break;  //绘制实体正八面体
		case 5:
			glutWireSphere(1.0f,15,15);
			break;  //绘制线框球
		case 6:
			glutSolidSphere(1.0f,15,15);
			break;  //绘制实体球
		case 7:
			glutWireTeapot(1.0f);
			break;  //绘制线框茶壶
		case 8:
			glutSolidTeapot(1.0f);
			break; //绘制实体茶壶
		case 9:
			gluSphere(obj,1.0f,15,15);
			break;  //绘制二次曲面(球)
		case 10:
			gluCylinder(obj,1.0f,0.0f,1.0f,15,15);
			break;  //绘制二次曲面(圆锥)
		case 11:
			gluPartialDisk(obj,0.3f,0.8f,15,15,30.0f,260.0f);
			break;  //绘制二次曲面(圆环)
		default:
			break;
    }
    glFlush();
}
//处理菜单响应
void ProcessMenu(int value)
{
    iMode=value;
    glutPostRedisplay();
}
void SpecialKeys(int key,int x,int y)
{
	//光标键控制图形的旋转
    if(key==GLUT_KEY_UP)    xRot-=5.0f;
    if(key==GLUT_KEY_DOWN)    xRot+=5.0f;
    if(key==GLUT_KEY_LEFT)    yRot-=5.0f;
    if(key==GLUT_KEY_DOWN)    yRot+=5.0f;
    if(xRot>356.0f)    xRot=0.0f;
    if(xRot<-1.0f)    xRot=355.0f;
    if(yRot>356.0f)    yRot=0.0f;
    if(yRot<-1.0f)    yRot=355.0f;
    glutPostRedisplay();
}
int main(int argc,char *argv[])
{
	int nGlutPolyMenu,nGlutCurveMenu,nGluCurveMenu,nMainMenu;

    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(400,400);
    glutInitWindowPosition(100,100);
    glutCreateWindow("OpenGL模型绘制函数示例");

    nGlutPolyMenu = glutCreateMenu(ProcessMenu);
    glutAddMenuEntry("线框正四面体",1);
    glutAddMenuEntry("实体正四面体",2);
    glutAddMenuEntry("线框正八面体",3);
    glutAddMenuEntry("实体正八面体",4);

    nGlutCurveMenu=glutCreateMenu(ProcessMenu);
    glutAddMenuEntry("线框球面",5);
    glutAddMenuEntry("实体球面",6);
    glutAddMenuEntry("线框茶壶",7);
    glutAddMenuEntry("实体茶壶",8);

    nGluCurveMenu=glutCreateMenu(ProcessMenu);
    glutAddMenuEntry("线框球面",9);
    glutAddMenuEntry("线框圆锥面",10);
    glutAddMenuEntry("线框圆环面",11);

    nMainMenu=glutCreateMenu(ProcessMenu);
    glutAddSubMenu("GLUT多面体",nGlutPolyMenu);
    glutAddSubMenu("GLUT曲面",nGlutCurveMenu);
    glutAddSubMenu("GLU曲面",nGluCurveMenu);
    glutAttachMenu(GLUT_RIGHT_BUTTON);

    glutDisplayFunc(Display);
    glutReshapeFunc(ChangeSize);
    glutSpecialFunc(SpecialKeys);
    Initial();
    glutMainLoop();
    return 0;
}


运行效果图:

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页