GLFW

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

构建GLFW

  GLFW可以从它的官方网站下载,目前官网上有Visual Studio2015及之前版本的预编译二进制版本和相应的头文件,我这里是下载了源代码自己进行编译的。(推荐下载32版本,64版本可能会出现很多问题)

  自己编译可以保证生成的库是兼容你的操作系统以及CPU的,如果直接下载预编译的二进制文件会出现各种兼容性的问题。

CMake

  CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。这允许我们从GLFW源码里创建一个Visual Studio 2017工程文件,之后进行编译。首先,我们需要从这里下载安装CMake。我选择的是Win32安装程序。 

  当我们的CMake安装完成后,可以从命令行或者GUI进入程序,我这里选择GUI。CMake需要一个源代码目录和一个存放编译结果的目标文件目录,源代码目录是我们选择GLFW的源代码根目录,编译目录我们可以自己新建。

  在设置完代码目录和目标根目录后,点击Configure(设置)按钮,然后让CMake读取设置和源代码,由于我使用的是Visual Studio 2017 ,最终我选择VS2017,CMake会显示可选编译选项用来配置最终生成的库。这里使用默认设置,并在此点击

Configure(设置)按钮保存设置。最后点击Generate(生成按钮),生成文件夹会在你设置的Bulid目录下面。

编译

  在Build文件夹里面选择GLFW.sln文件,用VS2017打开,然后自己手动编译一下。

  编译完成后,我们需要让IDE知道库和头文件的位置

  这里我创建了两个文件夹分别是:lib文件夹include文件夹。将源代码下的include/GLFW文件夹放到新建的include文件夹下,编译出来的glfw3.lib放在新建的lib文件夹下。

创建工程

  打开,VS2017,创建一个新的C++项目,之后就开始创建第一个OpenGL程序吧!

链接

  为了让程序使用GLFW,我们需要把GLFW库链接进工程中,这可以通过链接器设置里指定我们要使用glfw3.lib来完成,但是由于我们将第三方库放在另外一个目录中,我们的工程还不知道在哪里寻找这个文件 。于是我们需要将我们放第三方库的目录添加设置。

  要添加这些目录,我们首先进入工程属性,在解决方案窗口里右键项目,然后选择VC++ 目录(如下图)。

现在VS可以找到所需的所有文件了,最后需要在链接器选项卡里的输入选项卡里添加glfw3.lib这个文件:

要链接一个库我们必须告诉链接器它的文件名,库名字是glfw.lib。我们把它加到附加依赖项中。这样GLFW在编译的时候就会被链接进来了。

Windows上的OpenGL库

  opengl32.lib已经包含在Microsoft SDK 里,它在Visual Studio 安装的时候已经默认安装了,由于我们这里用的是VS编辑器,并且是在Windows操作系统上,我们只需要将opengl32.lib添加进链接器设置里就OK了。

GLAD

  到这里还没有结束,因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本很多,所以大多数函数的位置都没有办法保证在编译的时候确定下来,需要在运行查询。

开发者需要在运行时获取函数地址并将其保存在一个函数指针中,方便以后使用。在Windows中是这样的:

1 // 定义函数原型
2 typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
3 // 找到正确的函数并赋值给函数指针
4 GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
5 // 现在函数可以被正常调用了
6 GLuint buffer;
7 glGenBuffers(1, &buffer);

我们可以看到代码是比较复杂的,如果用的函数多了,复杂度就更多了。幸运的是,有些库能简化这个过程,其中GLAD是目前为止最新的,也是最流行的库。

 OpenGL版本查看

  工具地址:链接: https://pan.baidu.com/s/1i5koKBz 密码: urga

  我们可以通过这个软件来查看自己电脑的OpenGL版本。

配置GLAD

  GLAD是一个开源库,他能解决我们上面提到的这个复杂问题。GLAD的配置与大多数开源库有些不同,GLAD使用了一个在线服务。将语言设置为C/C++。在API选项中,选择3.3以上的OpenGL(gl)版本,之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

  GLAD提供给一个Zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录复制到我们刚才新建的include目录中,并且把glad.c文件添加到工程中。

  然后就可以将一下指令加入到头文件顶部了:

#include <glad/glad.h>

  最后点击编译,应该就不会出现任何错误了。现在我们OpenGL初步的环境已经搭建完成了。

 附加链接

  • GLFW:Window Guide:GLFW官方配置GLFW窗口指南。
  • Building application:提供了很多编译或链接相关的信息和各种错误的解决方案。
  • GLFW with Code::Blocks:使用COde::Blocks IDE 编译GLFW。
  • Running CMake:简要介绍如何在Window和Linux上使用CMake。

转载于:https://www.cnblogs.com/huangzhenxiong/p/7484935.html

OpenGL环境搭建相关推荐

  1. Mac VSCode OpenGL环境搭建

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

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

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

  3. OpenGL环境搭建:vs2013+freeglut2.8.1+glew1.7.0+gltools

    前言:之前同事说OpenGL环境贼难搭建,搭建了好多次都没成功过.恰巧最近自己也在学习OpenGL超级宝典,开发环境这块必须得支持,否则往后学习就是光看不练假把式了.于是今天特意花了一上午时间上网搜索 ...

  4. OpenGL环境搭建(四)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  5. 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:根据自 ...

  6. WIN32 opengl环境搭建

    #include "stdafx.h" #include "Win32Project1.h" #include <gl/gl.h> #include ...

  7. Ubuntu16.04系统nvidia显卡上图形界面及OpenGL环境搭建心得

    之前实验室的服务器上的外置GPU一直是用来处理深度学习等任务,没有用来做图形界面的显示,现在想要用OpenGL做开发,然而在Linux下,OpenGL是使用输出图形界面的GPU做为运算资源的,无法更改 ...

  8. python opengl_Python环境搭建之OpenGL

    以下内容为我python OpenGl 环境搭建历程: win7 64位操作系统,python3.5.3 ,无其他相关. 直接cmd或PowerShell输入以下命令: pip install PyO ...

  9. 【游戏开发】基于VS2017的OpenGL开发环境搭建

    一.简介 最近,马三买了两本有关于"计算机图形学"的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,"工欲善 ...

最新文章

  1. 中国互联网公司开源项目调研报告
  2. java range对象_Java LocalTime range()用法及代码示例
  3. .NET Core ASP.NET Core 1.0在Redhat峰会上正式发布
  4. BZOJ 4827 [Hnoi2017]礼物 ——FFT
  5. vivado中的OOC技术
  6. golang 查询mysql_Golang查询MySQL数据库
  7. python爬虫源码大全_python爬虫(附源码)
  8. mysql安装版与mysql解压版议论
  9. OSError: [WinError 1455] 页面文件太小,无法完成操作 报错解决
  10. DRM2.0 的身份认证过程
  11. matlab识别中国象棋棋盘,c – 使用OpenCV在棋盘中检测中国象棋棋子
  12. 基本磁盘与所谓动态磁盘区别
  13. 宏碁掠夺者Predator首款RGB内存条即将发售,特挑三星B-Die颗粒
  14. k m kb mb计算机组成,为什么对计算机存储单位(K,M,G,T)换算,总是糊里又糊涂?
  15. “信息系统灾难恢复方案设计”大赛
  16. MySQL双机热备份实施方案
  17. 《Oracle系列》Docker安装Oracle,Navicate连接Oracle
  18. E-day0004:annotate
  19. 防脱是一辈子的事业!!!(含测评不含推广
  20. 入门练习:利用标准API 获取电影海报图片的 url

热门文章

  1. 《高质量java程序设计》读书笔记之----异常处理(1)
  2. console用法java_使用console对javaScirpt进行全面调试-全面分析console用法
  3. CPL DPL RPL的区别 一致性代码段和非一致性代码段
  4. HTML5的Video标签的属性,方法和事件汇总
  5. Django POST请求错误
  6. 反射 + 配置文件 实现IOC容器
  7. 在Mac下安装使用OpenCV
  8. Python 并发编程之使用多线程和多处理器
  9. 工作中用的linux命令
  10. 数据结构与算法:异或运算