:)
经过了2天的各种尝试,终于把环境搭建好了。记录下来希望能帮到其他人
会使用到的库以及demo源码下载:https://pan.baidu.com/s/1c2ZwTZM 秘密: amna
前言
- 这篇文章主要是介绍了windows上面搭建opengl环境
- opengl是一个规范(简单说就是规定了各种绘图的操作),每个显卡的厂商有自己的实现,所以在调用opengl的api的时候就需要考虑显卡的型号(opengl仅仅是个规范至于显卡怎么实现就看显卡的厂商了)。所以就有前人将调用的api进行了封装,这样就不用考虑显卡的型号(实际是因为opengl的api调用比较复杂),我们用到的库是glew(后面会介绍)
- opengl虽然是用来绘图的api,但是当需要将绘制的图输出到屏幕上还需要和特定平台的窗口api结合(比如windows上面可以用MFC,android上用activity,其他不知道)。当然也有人写了一些库用来屏蔽各个操作系统的创建窗口的差异,我们用的是freeglut(后面介绍),这个库来自glut(这个库已经好久没有维护了)
- 超级宝典还用到了作者自己写的一个工具库GLTools(后面介绍)
需要用到 glew freeglut GLTools,下面就搞起来吧~~
freeglut
这个库在github上面,先去把代码搞下来 FreeGLUT
-
目录结构是这样的,可以看到只有源码,所以需要自己编译成库
这个项目并不是vs的项目,但是可以使用cmake将这个项目转成vs的项目(为啥可以转就百度吧)
首先是下载cmake点我下载,选择一个合适自己系统的就行(安装过程也很简单,下一步,下一步就可以了)
-
打开cmake-gui
将freegult转化成vs项目需要告诉cmake源码目录和转化后的工程保存目录
-
在源码文件夹里面创建一个转化后工程的文件夹,我命名为build
-
选择源码目录和刚才创建的文件夹
-
配置需要转化成什么版本vs的工程,点击左下角的Configure,我这里就转化成vs2017的项目
-
点击Finish开始转化,在转化的过程中可能会遇到一些问题,可以不用管直接点击Generate
-
这个时候就已经转化成功了,这个时候打开刚才创建的build目录(已经是一个vs项目了)
用vs打开转化后的工程,可以点击build里面的文件打开,也可以点击cmake面板上的OpenProject按钮
-
打开之后会发现里面的项目非常多
-
这里我们就仅仅打包freeglut_static吧(右键生成)
-
打包完成之后会在日志里面看到生成的库
到此freeglut编译完成,后面再使用
glew
- 首先还是把代码搞下来glew
-
glew提供了编译好的库,我们就使用它编译好的库吧(想要死磕源码编译的自行百度吧),这里把编译好的库和源码一起下载吧(后面会用到源码)
- glew就算搞好了(后面有空砸门再来死磕源码编译)
GLTools
这是作者自己的库,没有找到官方下载渠道(略坑)。最后在github上面找到了一个版本GLTools野鸡版本
在用cmake转成vs工程的报错了,所以就用了一个比较蠢的办法,创建一个vs工程,将源代码拷贝过去(记得需要先拷贝到磁盘的工程目录里面)
-
将src里面的cpp文件拷贝到工程目录下,将include文件夹拷贝到工程目录下
-
在vs里面将include路径和cpp源码添加进项目
-
开始编译(编译成静态库)
-
生成的时候报了一堆错误
-
解决办法是添加一个预处理命令
-
接着编译又报错了(可以看到的是使用了glew,前面让你下载了源码的哈)
-
将glew的.h (glew.h 和 wglew.h)和 .c(glew.c)文件添加到项目中(两个.h文件 和 一个.c文件)
-
再次编译的时候出现了很多警告
-
解决警告也是通过添加预处理来做的_CRT_SECURE_NO_WARNINGS
-
最后终于生成了
到这个时候需要的库都已经弄好了,接下来就是使用了
OpenGlDemo
- 创建一个vs项目
- 拷贝头文件(我是放到项目根目录下面的include) 和 库文件(我是放到项目根目录的lib里面)
-
拷贝完成之后的include目录
- 拷贝完成之后的lib目录
这里就使用书上的一个demo测试吧(代码是网上找的)
-
运行的时候出现错误
-
解决办法是定义一个WIN32的预处理命令
-
再次运行 又报错了,这个可以重命名freeglut的库来解决
-
运行,再次报错(库有冲突)
-
运行的时候还在报错
-
最后发现是静态库的问题,貌似不能使用静态库,所以换成动态库,重新编译freeglut,编译成动态库
-
替换项目里面的静态库
-
最后运行的时候报错
-
将动态库拷贝到生成exe的目录
-
最后终于可以了
好运