OpenGL+VS2010(64位)开发环境搭建(原创)

平台:Win7 x64版
           VS2010 
 
软件包:(1)freeglut 2.8.1,(2)glew,(3)GLTools 

        目前 Windows环境下的OpenGL库主要使用两种:glut和freeglut。
        glut
代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,  它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。  由于GLUT已经停止更新,考虑到软件模块更新及跨平台目前多使用freeglut替代。
        配置一:(freeglut):freeglut 下载地址: http://sourceforge.net/projects/freeglut/
        (1)将下载的压缩包解到 freeglut目录 ,进入visual studio目录的vs2010打开freeglut.sln编译库文件,按release的x86和x64各编译出lib文件,编译后生成的文件在解压目录的lib中(注意不在工程源文件目录中  。
        (2)把freeglut目录的include/GL内的所有头文件复制到 x: \Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl 文件夹中。
        (3)
把相应lib目录下的freeglut.lib和freeglut_static.lib放到 x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib文件夹中,x64版的 放到 x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\x64  文件夹中
        (4)把x86目录中的freeglut.dll放到windows下的system32文件夹内。(x64下的放置到:C:\Windows\ SysWOW64
          VS2010中的环境配置(以静态库版本为例) : 
        首先创建工程,其步骤如下: 
(1)创建一个Win32 Console Application。 把freeglut_static.lib和GLTool.lib加入工程。
(2)工程选项-〉C/C++的附加包含目录把freeglut和GLTools的头文件目录加上 。
        现在你可以把下面的例子拷贝到工程中去,编译运行。你可以看到一个彩色三角形。

 // Triangle.cpp By ramonyang
#include <GLTools.h>            // OpenGL toolkit
#include <GLShaderManager.h>    // Shader Manager Class //Glew包含GLTools的类库
#define FREEGLUT_STATIC//采用静态库编译需要本定义
#include <GL/glut.h>            // Windows FreeGlut equivalent

GLBatch triangleBatch;
GLShaderManager shaderManager;

void ChangeSize(int w, int h)//改变视角大小
    {
glViewport(0, 0, w, h);
    }

// This function does any needed initialization on the rendering context. 
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
{
// Blue background
glClearColor(0.0f, 0.0f, 1.0f, 1.0f );     
shaderManager.InitializeStockShaders();
// Load up a triangle
GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f, 
                  0.5f, 0.0f, 0.0f,
  0.0f, 0.5f, 0.0f };
triangleBatch.Begin(GL_TRIANGLES, 3);
triangleBatch.CopyVertexData3f(vVerts);
triangleBatch.End();
}

// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
triangleBatch.Draw();

// Perform the buffer swap to display back buffer
glutSwapBuffers();
}

// 主程序
        int main(int argc, char* argv[])
{
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
        glutReshapeFunc(ChangeSize);
        glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
 
        配置二(glut不建议使用): glut下载地址:(大小约为150k)  http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip  
        VS2010环境配置 : 
        将下载的压缩包解开,将得到5个文件(glut.dll, glut32.dll, glut.lib, glut32.lib,glut.h) 
(1)把glut.h复制到x: \Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl 文件夹中。
(2)把glut.lib和glut32.lib放到 x:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib 文件夹中 。 
(3)把glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(x64的位置为:C:\Windows\ SysWOW64 )  
(注:如在开发应用程序时用到OpenGL辅助库函数,则还需下载相应动态链接库,包含glaux.dll, glaux.lib, glaux.h,相应步骤同上) 
         VS2010环境配置 基于glut的OpenGL程序(不推荐) 
        首先创建工程,其步骤如下: 
(1)创建一个Win32 Console Application。 
(2)链接OpenGL libraries。在Visual C++中先右击项目,选择属性,找到连接器标签,最后在输入中的附加依赖库加上opengl32.lib glut32.lib glu32.lib. 
        现在你可以把下面的例子拷贝到工程中去,编译运行。你可以看到一个彩色三角形。 
  1. #include <stdlib.h>
  2. #include <GL/glut.h>

  3. void background(void)
  4. {
  5. glClearColor(0.0,0.0,0.0,0.0);//背景黑色 
  6. }

  7. void myDisplay(void)//画三角形回调函数
  8. {
  9. glClear(GL_COLOR_BUFFER_BIT);
  10. glBegin(GL_TRIANGLES);
  11. glShadeModel(GL_SMOOTH);
  12. glColor3f(1.0,0.0,0.0);
  13. glVertex2f(-1.0,-1.0);
  14. glColor3f(0.0,1.0,0.0);
  15. glVertex2f(0.0,-1.0);
  16. glColor3f(0.0,0.0,1.0);
  17. glVertex2f(-0.5,1.0);
  18. glEnd();
  19. glFlush();
  20. }

  21. void myReshape(GLsizei w,GLsizei h)
  22. {
  23. glViewport(0,0,w,h);
  24. glMatrixMode(GL_PROJECTION);
  25. glLoadIdentity();
  26. if(w <= h)
  27. gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);
  28. else
  29. gluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);
  30. glMatrixMode(GL_MODELVIEW);
  31. }

  32. int main(int argc, char* argv[])
  33. {
  34. /*初始化显示模式、窗体位置及大小*/
  35. glutInit(&argc,argv);
  36. glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
  37. glutInitWindowSize(400,400);
  38. glutInitWindowPosition(200,200);

  39. /*创建窗口¨2*/
  40. glutCreateWindow("Triangle");

  41. /*绘制与显示*/
  42. background();
  43. glutReshapeFunc(myReshape);//注册回调函数
  44. glutDisplayFunc(myDisplay);

  45. glutMainLoop();//进入glut事件处理循环
  46. return 0;
  47. }
        main函数中以glut开头的函数都包含在glut.h中。GLUT库的函数主要执行如处理多窗口绘制、处理回调驱动事件、生成层叠式弹出菜单、绘制位图字体和笔画字体,以及各种窗口管理等任务。 
       glutInit用来初始化GLUT库并同窗口系统对话协商。 
       glutInitDisplayMode用来确定所创建窗口的显示模式。参数GLUT_SINGLE 指定单缓存窗口,这也是缺省模式,对应的模式为GLUT_DOUBLE 双缓存窗口。参数GLUT_RGB指定颜色RGBA模式,这也是缺省模式,对应的模式为GLUT_INDEX 颜色索引模式窗口。 
       glutInitWindowSize 初始化窗口的大小,第一个参数为窗口的宽度,第二个参数为窗口的高度,以像素为单位。 
       glutInitWindowPosition 设置初始窗口的位置,第一个参数为窗口左上角x的坐标,第二个参数为窗口左上角y的坐标,以像素为单位。屏幕的左上角的坐标为(0,0),横坐标向右逐渐增加,纵坐标向下逐渐增加。 
       glutCreateWindow 创建顶层窗口,窗口的名字为扩号中的参数。 
       glutDisplayFunc 注册当前窗口的显示回调函数。当一个窗口的图像层需要重新绘制时,GLUT将调用该窗口的的显示回调函数。在此例中的mydisplay就是显示回调函数,显示回调函数不带任何参数,它负责整个图像层的绘制。我们的大部分工作将集中在这个函数中。 
      glutMainLoop 进入GLUT事件处理循环。glutMainLoop函数在GLUT程序中最多只能调用一次,它一旦被调用就不再返回,并且调用注册过的回调函数。所以这个函数必须放在注册回调函数的后面,此例中为glutDisplayFunc 。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值