前言:之前同事说OpenGL环境贼难搭建,搭建了好多次都没成功过。恰巧最近自己也在学习OpenGL超级宝典,开发环境这块必须得支持,否则往后学习就是光看不练假把式了。于是今天特意花了一上午时间上网搜索了相关资料,搭建过程也不是一帆风顺,但好在最终还是搭建完毕了,可以愉快的吃个中饭了。

Windows平台搭建篇
**方式一:**采用vs2013+freeglut-2.8.1+glew-1.7.0+gltools进行搭建。搭建流程如下:
1.下载glew-1.7.0:根据自己电脑操作系统位数来选择下载64位还是32位版本的glew。这里还需要把glew的源码下载下来,因为后面的gltools制作静态库时需要用到该源码文件。下载如图所示:

2.安装glew-1.7.0:由于我电脑是64位操作系统,所以我下载的是glew-1.7.0-win64.zip。下载下来后解压该zip文件,并进行以下操作:
一.将位于include文件夹下的GL文件夹复制到“vs2013安装根目录\VC\include“下。如图所示:

二.将位于lib 文件夹下的 .lib 文件复制到“vs2013安装根目录\VC\lib“下。如图所示:

三.将位于bin 文件夹下的 .dll 复制到 C:\Windows\System32目录中,如果是64位系统则放在SysWOW64目录。如图所示:

3.下载freeglut2.8.1。将下载完毕的freeglut2.8.1进行解压,并将位于include文件夹下的GL文件夹复制到“vs2013安装根目录\VC\include“下。如图所示:

4.生成freeglut静态库:生成流程如下所示:
一.用vs2013打开\freeglut-2.8.1\VisualStudio\2012\freeglut.sln项目文件。如图所示:


二.将解决方案配置设置成Release_Static编译模式。如图所示 :

此时配置属性也会自动调成Release_Static编译模式。如图所示:

三.生成解决方案,此时会在freeglut-2.8.1\lib\x86生成一个freeglut_static.lib文件。最后将生成的freeglut_static.lib文件复制到“vs2013安装根目录\VC\lib“目录下。流程如图所示:


5.生成GLTools静态库:必须在glew和freeglut配置完毕后才能进行GLTools静态库的生成。生成过程如下所示:
一.下载GLTools源码工程:可以使用vpn+svn从http://oglsuperbible5.googlecode.com/svn/trunk下载。也可以在csdn上面下载OpenGL超级宝典第五版源码。里面都包含有GLTools源码工程。
二.用vs2013新建一个win32静态库工程(它在Win32项目下),工程名为 GLTools ,记得去掉预编译头这个选项。如图所示:

三.将glew-1.7.0源代码工程下的src目录中的glew.c文件以及GLTools源码工程下的src目录中的文件(除了glew.c文件)添加到当前GLTools静态库工程中。如图所示:



四.将GLTools源码工程下的include目录中头文件(除了GL目录下面的glew头文件)复制到“vs2013安装根目录\VC\include“下,否则GLTools静态库工程中的源码文件就会报找不到头文件错误。流程如图所示:

五. 在项目 -》属性 -》C/C++ -》预处理器 -》预处理器定义中添加 _CRT_SECURE_NO_WARNINGS。然后编译生成,编译成功后会在工程Debug目录下生成 GLTools.lib静态库文件。最后将该GLTools.lib复制到“vs2013安装根目录\VC\lib“下。流程如图所示:



6.运行测试工程:用vs2013创建一个Win32控制台程序。测试流程如下:
一.在项目 -> 属性 -> 链接器 -> 输入 -> 依赖项中添加gltools.lib,glew32s.lib并在忽略特定默认库中添加 LIBCMT MSVCRT。如图所示:


二.将超级宝典第五版中的示例代码src\Chapter02\Triangle\Triangle.cpp添加到工程中,直接编译运行成功后,即可得到一个三角形图案。
核心代码如下:

#include "stdafx.h"
#include <GLTools.h>  // OpenGL工具箱:包含常用的加载库,如glew等。
#include <GLShaderManager.h>  // GLTools管理着色器类,用来对内建着色器以及自定义着色器进行管理。#ifdef __APPLE__
#include <glut/glut.h>    // 苹果平台下包含有gui的OpenGL操作库glut
#else
#define FREEGLUT_STATIC     // windows平台下包含的gui的OpenGL操作库freeglut
#include <GL/glut.h>
#endif// 批处理对象,用来批次操作数据
GLBatch batch;
// 着色器管理器对象
GLShaderManager shaderManager;// glut大小变化回调函数
void ChangeSize(int width, int height)
{// 视口随着glut窗口的改变而改变glViewport(0, 0, width, height);
}// glut界面渲染回调函数
void RenderScene()
{// 用指定颜色缓冲区的清除颜色来清除指定的缓冲区// GL_COLOR_BUFFER_BIT表示颜色缓冲区// GL_DEPTH_BUFFER_BIT表示深度缓冲区// GL_STENCIL_BUFFER_BIT表示模板缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);// 使用红色来填充内建的着色器GLT_SHADER_IDENTITYGLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);// 使用批处理对象利用内建着色器GLT_SHADER_IDENTITY一次性的渲染批处理对象中的数据batch.Draw();// 将离屏缓冲区中绘制的颜色交换到视图缓冲区中glutSwapBuffers();
}// 初始化渲染环境对象:由于已经在glut创建窗口时内部创建了一个该对象,所以此处就不在额外创建了。
void SetupRenderContext()
{// 设置颜色缓冲区的清空颜色为蓝色glClearColor(0.0f, 0.0f, 1.0f, 1.0f);// 初始化内建着色器shaderManager.InitializeStockShaders();// 准备三角形顶点数组GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,0.5f, 0.0f, 0.0f,0.0f, 0.5f, 0.0f};// 初始化批处理对象:按照三角形处理并有三个顶点batch.Begin(GL_TRIANGLES, 3);// 填充数据到批处理对象中batch.CopyVertexData3f(vVerts);// 结束批处理对象设置batch.End();
}// 文件主入口
int main(int argc, char* argv[])
{// 设置GLTools当前工作目录:// windows平台默认是当前文件所在目录为工作目录。// mac平台默认是App Bundle的Resource目录为当前工作目录。gltSetWorkingDirectory(argv[0]);// 初始化glut库glutInit(&argc, argv);// 设置glut显示模式:// GLUT_DOUBLE表示双缓冲区(离屏缓冲区用来绘制图形,视图缓冲区用来显示图形。)// GL_RGBA表示颜色模式// GL_DEPTH表示深度缓冲区,用来进行深度测试// GL_STENCIL表示模板缓冲区glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);// 设置glut窗口大小glutInitWindowSize(800, 600);// 创建glut窗口,此时内部自动创建一个OpenGL Render Context对象,也叫做OpenGL渲染环境对象。glutCreateWindow("Triangle");// 设置glut窗口大小变化回调glutReshapeFunc(ChangeSize);// 设置glut窗口渲染回调glutDisplayFunc(RenderScene);// 初始化glew加载库:glew包含有对opengl所有接口函数指针调用以及关联的枚举和变量等。GLenum err = glewInit();if (err != GLEW_OK){// 初始化glew失败fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));return 1;}// 初始化渲染对象,只有该对象才能对opengl库进行调用SetupRenderContext();// 阻塞模式开始glut主循环:此时就会按照上面设置好的数据和回调进行处理glutglutMainLoop();// 正常结束return 0;
}

运行结果如图所示:

OpenGL环境搭建:vs2013+freeglut2.8.1+glew1.7.0+gltools相关推荐

  1. OpenGL环境搭建:Win7 VS2013X64 +freeglut2.8.1+glew1.7.0+gltools

    Windows平台搭建篇: 方式一:采用Win7 VS2013X64 +freeglut-2.8.1+glew-1.7.0+gltools进行搭建.搭建流程如下: 1.下载glew-1.7.0:根据自 ...

  2. Mac VSCode OpenGL环境搭建

    Mac VSCode OpenGL环境搭建 1.安装glfw brew install glfw 2.下载glad https://glad.dav1d.de/ 选择合适的版本后 拷贝glad文件夹到 ...

  3. DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu)

    DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu) 目录 1.安装nvidia驱动 2.安装CUDA ...

  4. 团队环境搭建:MTK平台,Android 9.0内销TV编译服务器配置

    团队环境搭建:MTK平台,Android 9.0内销TV编译环境配置 文章目录 团队环境搭建:MTK平台,Android 9.0内销TV编译环境配置 一.前言 二.硬件环境要求 四 .替国内换源:so ...

  5. 深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow1.4.0 opencv3.4 含泪总结

    深度学习工作站环境搭建 ubantu16.04 安装显卡驱动 CUDA8.0 cuDNN6 anaconda tensorflow opencv 1 安装ubantu16.04 安装时不要在线更新,在 ...

  6. OPengl学习(二)——opengl环境搭建

    文章目录 0. 概念/准备 1.VS+Opengl 快速添加 手动编译 2.QT中使用opengl 1.pro配置文件 2.引入头文件 继承QGLWidget 3.实现三个主要函数 3.引用 0. 概 ...

  7. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(1)- 环境搭建(Python2.7.14 + pySerial3.4 + wxPython4.0.3)...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之环境搭建. 在写Jays-PyCOM时需要先搭好开发和调试环境,下表列出了开发过程中会用到的所有软 ...

  8. tensorflow gpu python3.5_tensorflow环境搭建:Ubuntu16.04+python3.5+cuda8.0+tensorflow1.4

    Ubuntu16.04是深度学习主流的操作系统,兼容性也最好. python3.5能够安装支持tensorflow的gpu cuda是nvidia推出的运算平台,cuda8.0对tensorflow比 ...

  9. OpenGL环境搭建

    GLFW GLFW是一个OpenGL的C语言库,它提供了渲染物体所需要的最低限度的接口,它允许用户创建OpenGL上下文,定义窗口参数以及用户的输入. 构建GLFW GLFW可以从它的官方网站下载,目 ...

最新文章

  1. Java控制层怎么调用适配器_java – 从适配器调用片段方法
  2. HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验
  3. 关于幂律分布的一个笔记_哈克_新浪博客
  4. mysql str_to_date 字符串转换为日期
  5. 力扣——机器人能否返回原点
  6. web开发中常见的安全漏洞及避免方法
  7. 【问链财经-区块链基础知识系列】 第三十八课 以太坊智能合约账户全解析
  8. 为了OFFER而战,大四那些日子在牛客网和Leetcode刷SQL题目
  9. java实现mysql的主从切换(第二部分)
  10. 解决开源矿工笔记本屏幕不能关闭的问题
  11. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer...
  12. openwrt 19 overlay 空间不足_【邯郸】2020年度市级科技企业孵化器和众创空间拟认定名单公示...
  13. 【Java】java中的Fork/Join
  14. Ubuntu下如何修改文件或者文件夹的权限
  15. 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
  16. c# 图片批量转双层PDF,OFD格式文件
  17. Java并发编程--线程池ThreadPollExecutor原理探究
  18. R语言使用oneway.test函数执行单因素方差分析(One-Way ANOVA)、使用aov函数执行单因素方差分析(aov函数默认组间方差相同)
  19. day18-正则表达式
  20. c语言 自动生成word文件,C#根据Word模版生成Word文件

热门文章

  1. CycleGAN实现斑马变马 结构主体代码分析(附加内容待完成)
  2. C++ opencv返回一幅图像返回以及vector作为函数返回值用法
  3. 大数据--商品推荐系统项目实现(下)
  4. 用html制作个人站点,【制作个人网站】如何在网上制作自己的网页?如何用html5制作个人主页?制作个人网页设计思路是怎样的?...
  5. 2020-12-18 Dataset之COCO数据集:COCO数据集的简介、下载
  6. 关于事件流的简单理解
  7. gmoj 6087. 【GDOI2019模拟2019.3.26】获取名额 题解
  8. 胡忠想|微博微服务架构的Service Mesh实践之路
  9. react antd TextArea 中文输入法 autoSize
  10. 数据结构——家谱管理系统