OpenGL探索(1): Xcode下的项目配置

本来更想在windows下开发 无奈自己的本本被某人顺到国外去了(吐血),

平时在公司只能用Mac所以有了此文。

本文是对learnopengl这个教程的项目配置的引导,因为没有提供Mac下的配置方法,自己写了下文以备后需和给其他人提供参考。


知识准备

OpenGL

先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定。

所有版本的OpenGL规范文档都被公开的寄存在Khronos那里。有兴趣的读者可以找到OpenGL3.3(我们将要使用的版本)的规范文档。如果你想深入到OpenGL的细节(只关心函数功能的描述而不是函数的实现),这是个很好的选择。如果你想知道每个函数具体的运作方式,这个规范也是一个很棒的参考。

状态机

OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。

假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。

当使用OpenGL的时候,我们会遇到一些状态设置函数(State-changing Function),这类函数将会改变上下文。以及状态使用函数(State-using Function),这类函数会根据当前OpenGL的状态执行一些操作。只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。


工具集

在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。

幸运的是,有一些库已经提供了我们所需的功能,其中一部分是特别针对OpenGL的。这些库节省了我们书写操作系统相关代码的时间,提供给我们一个窗口和上下文用来渲染。最流行的几个库有GLUT,SDL,SFMLGLFW。在教程里我们将使用GLFW


GLFW

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


构建GLFW

GLFW可以从它官方网站的下载页上获取

为了完整性我们将从编译源代码开始。所以我们需要下载源代码包

如果你要使用预编译的二进制版本的话,请下载32位的版本而不是64位的(除非你清楚你在做什么)。大部分读者反映64位版本会出现很多奇怪的问题。


用CMake工具编译下载好的文件

1.选择源代码目录和库的生成目录

2.点击Configure,选择Unix Makefiles(也可以选择Xcode,然后用Xcode编译项目) --> Done

3.这里库的生成配置使用默认设置,再次点击Configure

4.点击Generate(生成)按钮,生成的工程文件会在你的build文件夹中

OpenGL探索(1): Xcode下的项目配置_第1张图片
CMake配置GLFW

5.在终端进入build目录输入make,生成libglfw3.a文件在src目录


GLAD

因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:...(此文并非MarkDown省略代码...)

代码非常复杂,而且很繁琐,我们需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库。


GLAD是一个开源的库,它能解决我们上面提到的那个繁琐的问题。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


项目配置

1.Xcode创建一个控制台项目


OpenGL探索(1): Xcode下的项目配置_第2张图片
macOS Command Line Tool

    这里下一步语言要选择C++

2.创建include 和 libs目录 把对应的文件添加进项目


OpenGL探索(1): Xcode下的项目配置_第3张图片
目录和导入的库

3.TARGETS -> Build Phases -> Link Binary With Libraries中 把 IOKit,Cocoa,CoreVideo,OpenGL,libglfw3.a 这些库添加进去

4.TARGETS -> Build Settings -> Header Search Paths中加入include目录


OpenGL探索(1): Xcode下的项目配置_第4张图片
附加包涵目录

5.编写main.cpp

代码点击这里

6.运行项目


OpenGL探索(1): Xcode下的项目配置_第5张图片
运行结果

没有使用MarkDown 贴代码效果不好,所以省略了。 暂时先这样,以后对文章进行修缮。如果文章结构不清晰,或者有坑请在回复中提示,谢谢。

你可能感兴趣的:(OpenGL探索(1): Xcode下的项目配置)