vs2012配置OpenGL SuperBible5环境

 

 vs2012配置OpenGL SuperBible5环境_opengl

刚拿到opengl编程宝典第五版,打算配置好书中源码的编程环境,折腾了一天,终于弄好了,现在记录下完整的过程:

参考博客:http://www.csdn123.com/html/mycsdn20140110/e5/e55a7b5fee7751000622fef61ddec425.html


为了方便,可以新建三个文件夹,用来放置所需的h文件,lib文件,dll文件。

这里我把所有以下的文件提供下载,包括h,lib,dll三个文件夹,地址为:http://pan.baidu.com/s/1pJG6NAb


1.freeglut

下载地址:http://http://sourceforge.net/projects/freeglut/files/freeglut/2.8.1

下载完成后,打开\freeglut-2.8.1\VisualStudio\2012路径下的sln文件,分别用release和release_static生成解决方案。在\freeglut-2.8.1\lib\x86路径下得到文件:freeglut.dll,freeglut.lib,freeglut_static.lib,放入lib文件夹中,另外在\freeglut-2.8.1\include\GL路径下得到文件:freeglut.h,freeglut_ext.h,freeglut_std.h,glut.h,则可以在h文件夹中新建一个GL文件夹,把新得到的四个h文件放置进去。

2.glew

下载地址:http://sourceforge.net/projects/glew/files/glew/1.7.0/

链接中有win32版本和win64版本,请按照自己电脑的实际位数进行下载。将\glew-1.7.0\include\GL路径下的三个文件加入h\GL中去,将\glew-1.7.0\lib路径下的四个lib文件加入lib文件夹中,将\glew-1.7.0\bin路径下的两个dll文件放入dll文件夹中。

3.glut

下载地址:网上很多,百度即有。

解压后将其中的lib和dll文件放入相对应的文件夹中。

注意的是其中也有glut.h文件,复制到h\GL中,替换原来的glut.h文件(freeglut中来)。

4.GLTools(折腾好久才弄明白)

这个我从书中附带源码中得到,书中实例下载地址:http://www.starstonesoftware.com/OpenGL

在vs2012中新建一个win32控制台程序,项目名设为gltools,点击下一步,选择静态库,注意不要选择预编译头

将\SB5\Src\GLTools\src下的六个文件添加到源文件中,然后需要进一步配置:

项目右键->属性->配置属性->VC++目录->包含目录中添加F:\opengl\SB5\Src\GLTools\include和F:\opengl\SB5\Src\GLTools\include\GL(这个根据自己实际情况添加)。

项目右键->属性->c/c++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGSGLTools\include

在release下生成,就可以得到gltools.lib,添加到lib文件夹下。

将GLTools\include\中的h文件添加到h\中,注意GLTools\include\GL中的文件会覆盖。


下一步我们需要把三个文件夹中的文件添加到vs2012的环境中(根据自己实际情况,即vs2012的安装路径可能会不同):

将h文件直接拷贝至E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include

将lib文件拷贝至E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib

将dll文件拷贝至E:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin


接下来可以尝试跑如下实例:

新建win32控制台程序,并稍作配置:

项目右键->属性->连接器->输入->依赖项,添加gltools.lib;freeglut.lib;glew32.lib;

   忽略特定默认库,添加LIBCMT;MSVCRT;



[cpp] view plain copy print?

  1. <pre name="code" class="cpp">// Triangle.cpp  

  2. // Our first OpenGL program that will just draw a triangle on the screen.  

  3.   

  4. #include <GLTools.h>            // OpenGL toolkit  

  5. #include <GLShaderManager.h>    // Shader Manager Class  

  6.   

  7. #ifdef __APPLE__  

  8. #include <glut/glut.h>          // OS X version of GLUT  

  9. #else  

  10. #define FREEGLUT_STATIC  

  11. #include <GL/glut.h>            // Windows FreeGlut equivalent  

  12. #endif  

  13.   

  14. GLBatch triangleBatch;  

  15. GLShaderManager shaderManager;  

  16.   

  17. ///////////////////////////////////////////////////////////////////////////////  

  18. // Window has changed size, or has just been created. In either case, we need  

  19. // to use the window dimensions to set the viewport and the projection matrix.  

  20. void ChangeSize(int w, int h)  

  21.     {  

  22.     glViewport(0, 0, w, h);  

  23.     }  

  24.   

  25.   

  26. ///////////////////////////////////////////////////////////////////////////////  

  27. // This function does any needed initialization on the rendering context.   

  28. // This is the first opportunity to do any OpenGL related tasks.  

  29. void SetupRC()  

  30.     {  

  31.     // Blue background  

  32.     glClearColor(0.0f, 0.0f, 1.0f, 1.0f );  

  33.       

  34.     shaderManager.InitializeStockShaders();  

  35.   

  36.     // Load up a triangle  

  37.     GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,   

  38.                           0.5f, 0.0f, 0.0f,  

  39.                           0.0f, 0.5f, 0.0f };  

  40.   

  41.     triangleBatch.Begin(GL_TRIANGLES, 3);  

  42.     triangleBatch.CopyVertexData3f(vVerts);  

  43.     triangleBatch.End();  

  44.     }  

  45.   

  46.   

  47.   

  48. ///////////////////////////////////////////////////////////////////////////////  

  49. // Called to draw scene  

  50. void RenderScene(void)  

  51.     {  

  52.     // Clear the window with current clearing color  

  53.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);  

  54.   

  55.     GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };  

  56.     shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);  

  57.     triangleBatch.Draw();  

  58.   

  59.     // Perform the buffer swap to display back buffer  

  60.     glutSwapBuffers();  

  61.     }  

  62.   

  63.   

  64. ///////////////////////////////////////////////////////////////////////////////  

  65. // Main entry point for GLUT based programs  

  66. int main(int argc, char* argv[])  

  67.     {  

  68.     gltSetWorkingDirectory(argv[0]);  

  69.       

  70.     glutInit(&argc, argv);  

  71.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);  

  72.     glutInitWindowSize(800, 600);  

  73.     glutCreateWindow("Triangle");  

  74.     glutReshapeFunc(ChangeSize);  

  75.     glutDisplayFunc(RenderScene);  

  76.   

  77.     GLenum err = glewInit();  

  78.     if (GLEW_OK != err) {  

  79.         fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));  

  80.         return 1;  

  81.         }  

  82.       

  83.     SetupRC();  

  84.   

  85.     glutMainLoop();  

  86.     return 0;  

  87.     }