疫情结束,学习先行。从今天开始就来学习OpenGL
在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。
OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。
实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。
First of all,从创建一个窗口开始。而在这之前要先编译GLFW库。GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。GLFW源码的下载地址为https://www.glfw.org/download.html 有人会说为什么要自己编译源码呢。去下载库它不香么?原因是从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)。而这个过程也有利于你分析解决问题。
在编译源码之前,我们先安装一个CMake,windows端的CMake是有GUI的,这是一个可喜可贺的讯息。闲话休絮,我们先下载好GLFW的压缩包,然后解压,在里面建立一个叫build的文件夹。在CMake当中设置source code为我们的GLFW的根目录,build the binaries为我们建立的build文件夹。
然后点击 Generate,选择你的vs版本(我用的是vs2013)
再次点击Configure(设置)按钮保存设置。保存之后,点击Generate(生成)按钮,生成的工程文件会在你的build文件夹中。配置如下
下面我们就可以打开这个项目了 ,但是编译会出现一些error,这个error和我们要生成的lib无关,是示例和test里面的问题,我们完全可以将example和test从我们的项目里面删除,这并不影响生成库。
自此,我们就把库编译好了,接下来就是配置我们的第一个OpenGL工程了,明天见。