OpenGL学习笔记:1、配置GLFW+GLAD+SOIL+GLM+ASSIMP
文章目录
- 前言
- 一、GLFW
- 二、GLAD
- 三、SOIL
- 四、GLM
- 五、ASSIMP
- 总结
前言
在网上参考了许多搭建OpenGL开发环境的文章博客,但是基本上看到的都是基于Visual Studio的,而笔者习惯了使用Clion+MinGW,再加上配置这些玩意,着实要人头疼得紧,所以打算写一篇博客记录一下。
实际上在另外一台电脑上已经配置过一遍了,但是因为换了台主机,而两台主机整体架构不太一样,所以还需要在这台主机上面再搭一遍
工具:Cmake 3.25.0 +MinGW-w64
PS:工具
Cmake:
Download | CMakehttps://cmake.org/download/
MinGW-w64
(看主机配置,MinGW也行):
Downloads - MinGW-w64GCC for Windows 64 & 32 bitshttps://www.mingw-w64.org/downloads/
因为一些原因,笔者没法直接在官网上下载MinGW-w64的源码,所以又在网上找了一份资源:
链接:百度网盘 请输入提取码
提取码:scd1
一、GLFW
1、下载源码:Download | GLFWGLFW source code and binary distribution download links.https://www.glfw.org/download.html
如果不嫌麻烦,或者原下载下来的文件中的库对本地环境不适配,可以选择下载Source Package下的源码:Source Package,然后在本地主机上用Cmake+MinGW32-make进行编译,得到适配本机的库libglfw3.a和glfw3.dll
或者可以直接下载官网上按Windows操作系统32位或者64位的编译好的压缩包,笔者选择的是64位的压缩包(这个按照自己主机操作系统的位数来,好像32位的在32和64上都可以)
2、将下载得到的压缩包解压到某个文件夹下(你能找到就行),然后将解压后文件里include文件夹下的GLFW文件夹(里的两个头文件)放到目标项目的头文件夹下即可
3、接着将lib-mingw-w64下的库文件放到项目的库文件夹lib下
4、 接着设置CMakeList.txt文件,将include头文件和lib库文件都包含进项目 :
-lopengl32 -lglfw3
5、 接着就是在cpp文件中#include<glfw>就好了
二、GLAD
、1、下载源码:https://glad.dav1d.de/Web generator for the Glad toolhttps://glad.dav1d.de/
按照自己所需要的配置下载即可
然后点击GENERATE,下载glad.zip压缩包即可
2、接着同样将glad.zip压缩包解压到某个自己能找到的文件夹即可
3、接着将include文件夹下的glad文件夹和KHR文件夹都放到目标项目的头文件夹include
4、然后将src文件夹下的glad.c文件放到目标项目的src文件夹下
5、接着设置CmakeList.txt文件,将glad、KHR文件夹和glad.c文件加入进项目中
6、然后就是在使用的时候,加上#include<glad/glad.h>就好了
三、SOIL
1、下载源码,但是去官网:http://www.lonesock.net/soil.html 不知道为什么一直连不上,显示空白页,所以又去网上找了一份资源,在github上:https://github.com/DeVaukz/SOILhttps://github.com/DeVaukz/SOIL
2、下载下来后解压缩到自己能找到的文件夹下
3、接着使用Cmake进行编译,其中源码目录选择解压缩后的文件夹,编译目录选择解压缩后文件夹中的build文件夹
然后点击configure按钮,选择MinGW Makefiles选项,接着再点击一次configure,然后点击Generate按钮,此时build文件夹中已经有些文件了,但还没有目标库文件
4、接着打开命令行,并到build文件夹下,运行mingw32-make (-16) 命令,若能正常运行产生对应目标文件libSOIL.a和libSOIL.dll即可,若不能则需要按照提示去修改文件或者设置中提示错误的地方,完成后应该产生三个文件
PS:这一步需要先下载MinGW,并将其bin目录添加到电脑高级设置的系统变量的path中
5、接着将解压后的文件夹下的src文件夹下的SOIL.h头文件放到项目include文件夹中,将上述产生的三个库文件放到项目lib文件夹中,同时将.dll文件放到cmake-build-debug文件夹下
6、编辑CMakeList.txt文件,将头文件SOIL.h包含进项目和libSOIL.a库文件链接上项目
PS:-lSOIL 链接需要放到-lopengl 链接之前
7、接着就是使用的时候记得加上#include<SOIL/SOIL.h>就好
四、GLM
1、相对于其他的库,其实GLM就是一系列头文件,无需编译,直接下载文件后使用即可
下载源码:Releases · g-truc/glm · GitHubOpenGL Mathematics (GLM). Contribute to g-truc/glm development by creating an account on GitHub.https://github.com/g-truc/glm/releases
2、下载后解压到某个自己能找到的文件夹下
3、然后直接将其放到项目的include文件夹下即可
4、然后编辑CMakeList.txt文件,将其包含进项目
5、然后就是在使用的时候,记得加上#include对应的头文件就好了
五、ASSIMP
1、下载源码:
Releases · assimp/assimp · GitHubThe official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure. - Releases · assimp/assimphttps://github.com/assimp/assimp/releases
在Github上下载自己想要的对应版本的源码,笔者选择的是5.1.6
2、下载后解压到自己能找到的文件夹下
3、接着需要使用Cmake和MinGW进行编译,在解压后的文件夹中新建一个build文件夹,然后使用Cmake编译,并将源目录选择解压后的文件夹,编译目录选择新建的那个build文件夹
然后也是选择用MinGW Makefiles进行Configure,两次,接着点击Generate按钮进行生成文件,此时完成后Cmake界面应该如上所示,此时build文件夹中应该已经有了一些文件,但还未生产目标库文件
PS:这一步如果没有安装好DirectX SDK,可能会报错。可以直接到Microsoft官网上去下载:
https://www.microsoft.com/zh-CN/download/details.aspx?id=6812https://www.microsoft.com/zh-CN/download/details.aspx?id=6812
接着按照安装软件的导向一步步来即可,而在安装DirectX过程中可能会遇到s1023的错误,而这需要先将本机上的 Visual C++ 2010 Redistributable Package version 10.0.40219 卸载(x86和x64都要),然后在接着安装DirectX。在安装完DirectX后可以再从Microsoft官网上再下回来:
https://www.microsoft.com/zh-CN/download/details.aspx?id=26999https://www.microsoft.com/zh-CN/download/details.aspx?id=26999 4、接着再build文件夹下打开命令行,并运行mingw32-make命令,完成后应该产生三个文件:bin目录(build目录里的)下的libassimp.dll文件,lib目录下的libassimp.dll.a,和contrib\zlib目录下的libzlibstatic.a
5、接着将这三个文件放到项目的lib库文件夹下,同时将libassimp.dll放到cmake-build-debug文件夹下,并将原解压文件夹下的include中的assimp文件夹放到项目的头文件夹include下
6、接着编辑CmakeList.txt文件,将libassimp.dll库文件链接上项目,将assimp头文件包含进项目
7、然后就是在使用的时候,记得在开头处加上#include对应头文件就好了
总结
配置的这些OpenGL的各种库,其中GLFW是负责创建管理窗口和上下文的,这个基本上是进行OpenGL进行编程所必须的,而GLAD是负责访问OpenGL规范接口的,相对来说他是GLEW的升级版,在某些程度上可以用GLEW进行代替(除了初始化不一样,其他大多GL函数是一样使用的),SOIL是简易OpenGL图像库(Simple OpenGL Image Library)的缩写,主要是负责进行加载和处理图像的,相对来说,他有SOIL2的升级版可以进行替代使用,GLM(OpenGL Mathematics )库主要是负责矩阵等数学运算的C++头文件数学库,ASSIMP库主要是负责进行模型加载的,可以导入各种模型文件并进行统一格式导出。
基本上这些库都是进行OpenGL编程所必要的库,这其中GLAD和GLM是头文件库,可以直接包含头文件进行使用,而GLFW、SOIL和ASSIMP是需要库链接后才能进行使用的。而这其中相对于GLFW在官网上既有源码文件也有在各种环境下编译好了的库文件,SOIL和ASSIMP基本上都是源码需要在本地上进行编译好了才能实现适配的,而且相对于网上大多数的使用Visual Studio进行编译实现的,使用Clion的还需要自己使用MinGW去找各种方式进行编译,相对来说确实有点麻烦。不过总的来说也就是分为四部:一、在网上找到资源或者源码,下载下来;二、使用Cmake对源码Configure和Generate一下,进行build;三、使用MinGW进行编译,在build文件夹下运行mingw32-make进行编译,得到库文件;四、将库文件和头文件,链接和包含进项目。
OpenGL学习笔记:1、配置GLFW+GLAD+SOIL+GLM+ASSIMP相关推荐
- glut glfw glad SOIL glm freetype等配置
a. 配置glut https://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 链接下载glut.下载之后解压得到5个文件gl ...
- openGL学习笔记_配置开发环境第一个窗口
https://learnopengl-cn.github.io/ openGL学习网站 开发语言 C++ https://www.khronos.org/registry/OpenGL/index ...
- OpenGL 学习笔记 II:初始化 API,第一个黑窗,游戏循环和帧率,OpenGL 默认垂直同步,glfw 帧率
前情提要: 上一篇: OpenGL 学习笔记 I:OpenGL glew glad glfw glut 的关系,OpenGL 状态机,现代操作系统的窗口管理器,OpenGL 窗口和上下文 OpenGL ...
- OpenGL学习笔记(八):进一步理解VAO、VBO和SHADER,并使用VAO、VBO和SHADER绘制一个三角形
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7888 ...
- 【OpenGL学习笔记⑧】——键盘控制正方体+光源【冯氏光照模型 光照原理 环境光照+漫反射光照+镜面光照】
✅ 重点参考了 LearnOpenGL CN 的内容,但大部分知识内容,小编已作改写,以方便读者理解. 文章目录 零. 成果预览图 一. 光照原理与投光物的配置 1.1 光照原理 1.2 投光物 二. ...
- 【OpenGL学习笔记】地月系
OpenGL学习笔记2-地月系 文章目录 OpenGL学习笔记2-地月系 前言 运行结果 纹理图片 一.TexturePool 1.**TexturePool.h** 2.**TexturePool. ...
- 【OpenGL学习笔记⑥】——3D变换【旋转的正方体 实现地月系统 旋转+平移+缩放】
✈️ 文章目录 零. 成果预览图 一.3D立方体的顶点数组 二.纹理旋转 三.纹理缩放 四.画n个3D图形 五.轨道的数学公式 六.深度缓冲(Z 缓冲) 七.完整代码 八.参考附录: 神器的正方体 ☁ ...
- oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组
ASM学习笔记_配置ASMLIB磁盘组 目录 1 ASMLIB Introduction 2 虚拟机添加一个共享磁盘(块设备) 3 下载,安装ASMLIB 4 配置,使用ASMLib 磁盘组 #### ...
- Linux学习笔记12——配置ftp、squid、Tomcat、Samba、MySQL主从
Linux学习笔记12 Linux学习笔记12 配置FTP服务 配置pure-ftpd 开机启动 上传下载文件 配置vsftpd CentOS 70安装配置Vsftp服务器 搭好vsftp之后出现55 ...
- OpenGL学习笔记:矩阵变换
文章目录 缩放 glm矩阵表示 glm缩放矩阵实现 位移 齐次坐标 glm位移矩阵实现 旋转 沿x轴旋转 沿y轴旋转 沿z轴旋转 沿任意轴旋转 glm旋转矩阵实现 矩阵的组合 glm矩阵组合使用 接上 ...
最新文章
- Nature:复杂菌群空间分布研究
- java怎么创建子程序_JVM执行子程序
- 最后一次作业-----课程总结
- android R文件丢失
- Linq 常用操作(增删改)
- 面试官让我说出2种@Transactional注解的失效场景,我一口气给他说了六种
- Leetcode--136. 只出现一次的数字
- laravel 模型(2)
- 深度神经进化大有可为?Uber详解如何用它优化强化学习 | 5篇论文
- 网页优化系列三:使用压缩后置viewstate
- 不让EditText打开就获取焦点
- 关于proc的介绍,比较详细
- HTML5与phonegap接口对比
- idea中常用快捷键
- Repast Simphony——案例:僵尸感染人类
- html中将字体设置成透明的,解决css设置背景透明,文字不透明_html/css_WEB-ITnose
- eclipse使用maven新建类目录时,提示The folder is already a source folder
- 用计算机计算实发工资,工资税率计算器 个税反推应发工资计算公式
- 登录前的人机验证VAPTCHA
- int(4)、int(8)、int(11) 分别占用几个字节 ?