设为首页 收藏本站
查看: 1445|回复: 0

[经验分享] vs2012配置OpenGL SuperBible5环境

[复制链接]

尚未签到

发表于 2018-6-20 06:42:57 | 显示全部楼层 |阅读模式
vs2012配置OpenGL SuperBible5环境
DSC0000.jpg

  版权声明:本文为博主原创文章,未经博主允许不得转载。
  刚拿到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?

  •   <pre name="code" class="cpp">// Triangle.cpp
  •   // Our first OpenGL program that will just draw a triangle on the screen.

  •   #include <GLTools.h>            // OpenGL toolkit
  •   #include <GLShaderManager.h>    // Shader Manager Class

  •   #ifdef __APPLE__
  •   #include <glut/glut.h>          // OS X version of GLUT
  •   #else
  •   #define FREEGLUT_STATIC
  •   #include <GL/glut.h>            // Windows FreeGlut equivalent
  •   #endif

  •   GLBatch triangleBatch;
  •   GLShaderManager shaderManager;

  •   ///////////////////////////////////////////////////////////////////////////////
  •   // Window has changed size, or has just been created. In either case, we need
  •   // to use the window dimensions to set the viewport and the projection matrix.
  •   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();
  •   }


  •   ///////////////////////////////////////////////////////////////////////////////
  •   // Main entry point for GLUT based programs
  •   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;
  •   }


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-526028-1-1.html 上篇帖子: windows上类似dnsmasq的软件dualdhcpdnsserver介绍 下篇帖子: SQL server 2012 数据库还原操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表