您的位置:首页 > 运维架构

OPENGL学习笔记之二

2017-09-19 20:45 134 查看

OPENGL学习笔记之二

2017/9/19

阅读材料来自learnopengl.com以及learnopengl-cn.github.io

1.针对OpenGL的最流行的几个库有GLUT,SDL,SFML和GLFW。本次学习过程中我们使用的都是GLFW库。

2.GLFW

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

下载地址

我们这里下载32位的源码包,因为64位容易出现其他错误。从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)。之后,将其解压并打开。我们只需要里面的这些内容:

编译生成的库

include文件夹

但是因为每位开发者使用的IDE不同,所提供的工程/解决方案文件可能和一些人的IDE不兼容,因此一般都是从.c/.cpp和.h/.hpp文件来自己建立工程/解决方案,但是比较麻烦,因此我们使用叫CMake的工具。

3.CMake

下载地址

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

下载完后我们打开GUI,在设置完源代码目录和目标目录(可以取名叫…../build)之后,点击Configure(设置)按钮,让CMake读取设置和源代码。之后我们选择工程的生成器,CMake会显示可选的编译选项用来配置最终生成的库。这里我们使用默认设置,并再次点击Configure(设置)按钮保存设置。保存之后,点击Generate(生成)按钮,生成的工程文件会在你的build文件夹中。

=_=这里我没有在GLFW的源码里congfigure创建CMAKEList.txt。导致总是报错(当前目录does not appear to contain CMakeLists.txt.)还不知道怎么解决,完全忘了CMAKE是用来把GLFW干嘛的。

4. 在build文件夹里找到GLFW.sln文件并打开。因为CMake已经配置好了GLFW3项目,所以我们直接点击Build Solution(生成解决方案)按钮,然后编译的库glfw3.lib(注意我们用的是第3版)就会出现在build/src/Debug文件夹内。

库生成完毕之后,我们需要让IDE知道库和头文件的位置。有两种方法:

1)找到IDE或者编译器的/lib和/include文件夹,添加GLFW的include文件夹里的文件到IDE的/include文件夹里去。用类似的方法,将glfw3.lib添加到/lib文件夹里去。虽然这样能工作,但这不是推荐的方式,因为这样会让你很难去管理库和include文件,而且重新安装IDE或编译器可能会导致这些文件丢失。

2)推荐的方式是建立一个新的目录包含所有的第三方库文件和头文件,并且在你的IDE或编译器中指定这些文件夹。我个人会使用一个单独的文件夹,里面包含Libs和Include文件夹,在这里存放OpenGL工程用到的所有第三方库和头文件。这样我的所有第三方库都在同一个位置(并且可以共享至多台电脑)。然而这要求你每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录。

完成上面步骤后,我们就可以使用GLFW创建我们的第一个OpenGL工程了!





为了使我们的程序使用GLFW,我们需要把GLFW库链接(Link)进工程:

要添加这些目录(需要VS搜索库和include文件的地方),我们首先进入Project Properties(工程属性,在解决方案窗口里右键项目),然后选择VC++ Directories(VC++ 目录)选项卡,在Include DirectoriesLibrary Directories这两栏添加目录

最后需要在Linker(链接器)选项卡里的Input(输入)选项卡里添加glfw3.lib这个文件:

我们把glfw3.lib加到Additional Dependencies(附加依赖项)字段中,这样GLFW在编译的时候就会被链接进来了。

另外

如果你是Windows平台,opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了。由于这篇教程用的是VS编译器,并且是在Windows操作系统上,我们只需将opengl32.lib添加进连接器设置里就行了。

5.配置GLAD

因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库

GLAD库github地址

GLAD在线服务地址

GLAD是一个在线服务的开源的库,根据你的需求填写条件下载不同库。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。

打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(gladKHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。

经过前面的这些步骤之后,你就应该可以将以下的指令加到你的文件顶部了:

#include <glad/glad.h>


tips:vs中设置多个启动项目

1.在解决方案资源管理器中,选择您的解决方案。

2.在“视图”菜单上选择“属性页”。

“解决方案属性页”对话框即会打开。

3. 选择“通用属性”,再选择“启动项目”。

即会显示您的解决方案的“启动项目”属性。

4.选择“多启动项目”选项。

5.为每个启动项目单击“操作”,然后从选项下拉列表中选择“启动”或“开始执行(不调试)”(如果不想在启动时运行调试器)。

6.若要更改项目打开、调试和运行的顺序,请选择这些项目,然后单击“上移”或“下移”。

7.单击“确定”保存这些设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: