注:本文可转载,转载请著名出处:http://www.cnblogs.com/collectionne/p/6937644.html。本文还会修改,如果不在博客园(cnblogs)发现本文,建议访问上面的链接访问最新文章。

部分资料来自LearnOpenGL

学OpenGL的都会知道,OpenGL只提供了绘图功能,创建窗口是需要自己完成的。这就需要学习相应操作系统的创建窗口方法,比较复杂,并且每个操作系统都不同。为简化创建窗口的过程,可以使用专门的窗口库,例如GLUT、GLFW等。由于GLUT已经是90年代的东西了(不过后来还有freeglut),而GLFW是新的,因此建议使用GLFW。

使用GLFW之前需要先进行配置,那怎么配置呢?本文将会介绍配置方法。

下载GLFW

进入GLFW官方网站glfw.org,点击右上角的download,看见如下界面:

这时,可以点击Windows pre-compiled binaries标题下面的32-bit Windows binaries或64-bit Windows binaries(此方法仅限Windows,且建议选择32-bit Windows binaries),下载已经编译好的binary。也可以点击Source package标题下面的Source package下载源代码自己编译。

配置

直接下载binary

点击32-bit Windows binaries进行下载(可能上不了,这时可以尝试刷新),这时浏览器下面会弹出下载提示。

下载之后,解压压缩包,得到的文件夹应如下:

选择适合自己编译器的库,将文件夹里的glfw3.dll、glfw3.lib和glfw3dll.lib拷贝到一个新文件夹,例如D:\libs\。使用时可以只使用glfw3.dll(静态链接),也可以使用glfw3dll.lib和glfw3.dll(动态链接)。结束。

编译源代码

下载的binary可能没有适合自己编译器的,这时就只能自己编译了。

点击Source package进行下载(可能上不了,这时可以尝试刷新),这时浏览器会弹出下载提示。

下载之后,解压压缩包,得到的文件夹应如下(只要有deps、include、src、CMakeLists.txt等文件或文件夹就可以了):

CMake

自己编译GLFW需要使用CMake。CMake是一个可以通过源代码生成相应编译器的项目文件的软件。进入CMake官方网站cmake.org,点击右上角的download进入下载页面:

建议选择最新版(目前是3.8.2)。找到Binary deistributions,选择适合自己平台的下载(可以选择Installer,也可以选择ZIP),我选择的是Windows win32-x86 Installer(虽然我电脑是64位)。注意,如果你电脑上有CMake 3.4或更早的版本,请卸载

如果是下载ZIP,直接解压就可以用了;如果是Installer,则需要安装,点击下载的.msi文件,根据指示进行安装。安装完毕后,进入CMake所在文件夹:

进入bin文件夹,里面有cmake.exe和cmake-gui.exe两个文件。前者是控制台版的,后者是GUI版的。

生成项目文件

使用cmake-gui.exe

打开cmake-gui.exe,应出现如下界面:

在Where is the source code栏里,选择GLFW源代码所在目录(即前面的include、src等文件夹所在目录),我这里是D:/libs/glfw。

在Where to build the binaries栏里,选择要将项目文件生成在哪个文件夹里,可以不存在。我这里选择的是D:/libs/glfw/build。

点击Configure。如果有"Build directory does not exist, should I create it?"的提示,点击Yes。(以VS2015为例)

选择需要生成哪个编译器的项目文件。这里直接选择默认的。点击Finish。等待生成完毕,如果出现下列界面就成功了。

点击Generate,等待生成完毕。如果底下显示"Generating done"则生成成功。接下来可以直接点击Open Project,或找到生成的GLFW.sln(或者其它扩展名)手动打开。

使用cmake.exe

如果直接使用cmake.exe,安装CMake时默认没有将cmake.exe所在文件夹添加到PATH,因此需要设置PATH。打开命令行(Windows为Win+R输入cmd),使用下列指令:

set PATH=C:\Program Files (x86)\CMake\bin;%PATH%
cd glfw
md build
cd build
cmake ..

注意需要将cd glfw中的glfw换成GLFW源码所在的文件夹(和Where is the source code一样,但注意必须在C盘)。输入完以上指令后,在GLFW源码文件夹中出现了一个build文件夹,里面有GLFW的项目文件。

编译

现在只要编译就可以了,这一点各IDE大同小异。以VS2015为例,点击上面的生成,选择生成解决方案,等待编译完成。编译日志很长,一共有195行。

现在可以看一下,在build文件夹里,是不是出现了一个名为glfw3.lib的文件(VS2015在build/src/Debug目录下)。不过直接编译只能生成glfw3.lib,没有DLL,因此是静态链接。

Done!

使用GLFW

要使用GLFW,打开IDE,在包含路径(include directories)里加上glfw3.lib所在的路径,在附加依赖项(additional dependencies)里加上glfw3.lib,就可以使用GLFW啦!

Todo

本文偏向于Windows,没怎么介绍其它操作系统配置。以后会补充!

[OpenGL]配置GLFW(超详细)的更多相关文章

  1. centos7 yum搭建lnmp环境及配置wordpress超详细教程

    yum安装lnmp环境是最方便,最快捷的一种方法.源码编译安装需要花费大量的人类时间,当然源码编译可以个性化配置一些其它功能.目前来说,yum安装基本满足我们搭建web服务器的需求. 本文是我根据近期 ...

  2. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  3. [OpenGL]配置GLFW

    注:本文可转载,转载请著名出处:http://www.cnblogs.com/collectionne/p/6937644.html.本文还会修改,如果不在博客园(cnblogs)发现本文,建议访问上 ...

  4. Mysql双机热备配置(超详细多图版)

    一.双击热备介绍 1.基本概念 双机热备特指基于高可用系统中的两台服务器的热备(或高可用),双机高可用按工作中的切换方式分为:主-备方式(Active-Standby方式)和双主机方式(Active- ...

  5. Spring Boot 日志配置方法(超详细)

    默认日志 Logback : 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了. 从上图 ...

  6. 【cocos 2d-x】VS2013+cocos2d-x3.3Final+Adriod交叉编译环境配置(超详细版)

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.com ...

  7. Zookeeper 集群安装配置,超详细,速度收藏!

    今天,栈长分享下 Zookeeper 的集群安装及配置. 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11. ...

  8. VS2015ASP.NET MVC5项目中Spring.NET配置方法(超详细)

    首先,在ASP.NET MVC5项目右键,如下图所示,选择“管理Nuget程序包...” 然后,在弹出的页面的搜索框中输入“spring.web”,在返回结果中选择Spring.Web和Spring. ...

  9. dubbo配置清单-超详细版

    服务发布者 在服务发布者的springboot主配置文件application.properties中添加dubbo配置 #dubbo服务名 spring.dubbo.application.name ...

随机推荐

  1. cvpr2017年的所有论文下载

    wget -c -N  --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla   http://op ...

  2. 基于TCP的通信程序设计

    套接字(Socket)是一种跨主机进程之间的双向通信接口,每个打开的套接字都可以通过一个套接字描述符来描述,因此可以使用低级文件编程库操作套接字. TCP是一中面向连接的网络传输控制协议.它每发送一个 ...

  3. javascript 中 "undefined" 与 "is not defined" 分析

      var var1; console.log( typeof var0);//print "undefined",主要看下面对var0单独的输出 console.log( typ ...

  4. mybatis学习总结(一)——简介

    基本构成 SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口) SqlSessionFactory:依靠工厂来生成S ...

  5. meteor---在合并打包多个文件ZIP下载的功能

    实现多个文件边打包边下载的功能,速度还可以,本人亲测,欢迎大家来指点archiver --用NPM安装这个模块---本人文件存储在file-collection 中,可以用fs : fs.create ...

  6. SQL 关联操作

  7. Objectvice-C中的super

    /** 狗:哈士奇 */ //僵尸 #import <Foundation/Foundation.h> @interface Dog : NSObject - (void) walk; + ...

  8. 1022. Fib数列

    https://acm.sjtu.edu.cn/OnlineJudge/problem/1022 Description 定义Fib数列:1,1,2,3,5,8,13,…1,1,2,3,5,8,13, ...

  9. eval函数用法

    JavaScript 全局对象 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字 ...

  10. 最全的Android源码目录结构详解【转】

    本文转载自:http://blog.csdn.net/yangwen123/article/details/8055025 Android 2.1|-- Makefile|-- bionic     ...