为什么想学OpenGL,厌烦了业务代码,厌烦了学习使用各种框架,厌烦了码蚁一样的生活,房租,水电,面试,工作……
人总是要有理想的,以前学算法,学组原,也是人云亦云,必须要学这个。后面学前端也是,从HTML到JS到React到放弃。
我本科是物理专业的,想想曾经只出现在书本上的拉格朗日力学,万有引力,波动力学,分子热运动,能可视化的体现在电脑桌面上,也是对自己专业的一个交代吧,想当初大一立下的豪情壮志,4年内学完MAYA和3DMAX,UNITY,结果借的书一次没翻开过。想想最近游戏界出现的UE5,光线追踪,听到这些词就足以让人兴奋。
不积跬步,无以至千里。糊口要有,梦想也要有。(写这篇文章的我正在图书馆,我觉得我应该去当个图书管理员)
本人能力有限,也是0基础开始学OpenGL,学习能力强的建议自己去寻找学习资源,效率会更高
https://learnopengl-cn.github.io/
视频可以去B站搜索闫令琪的视频
书籍推荐《计算机图形学》《计算机图形学编程 使用OpenGl和C++》
不废话了,先从环境搭建开始吧。
1.下载glfw
https://www.glfw.org/download.html
下载是一个压缩包,解压到本地,如下:(是不是太啰嗦了点)
2.下载Cmake
同样解压到本地,然后打开cmake-gui.exe
source code ,填写我们之前解压的glfw所在路径
下面的build,当然也是在glfw路径下新建一个build文件夹
点这个这个gui页面的configure
我本地已经下载好了VS,我也不写了,随便搜了一下别人的安装教程https://www.cnblogs.com/HGNET/p/12165001.html
然后点击finish,如下
等一会
然后再点击configure按钮,然后点击generate
这时我们的buidl文件下会生成一堆文件,如下
然后点击这个glfw.sln文件
打开后选择生成解决方案
3.下载GLAD
这里我们不知道这个gl版本是多少,发现我之前安装的AIDA64能看
http://www.aida64.com.cn/html/downloads.html
回到我们刚才的GLAD页面
选择generate
下载glad.zip,并解压
4.配置项目
前面一堆操作,我们得到了这些头文件和库文件,也就是.h和.lib,还有.c结尾的文件
现在回到VS,我们创建一个空白的解决方案
点击创建后,打开我们的MyProject文件夹,长这样
现在我们创建一个Libraries文件夹,像这样
打开Libraries,创建include和lib文件夹,用来存放我们的.h文件和.lib文件,话说我这种C++零基础的要不要去买一本C++ prime
把上面提到的文件都复制过来,如下
然后开始配置我们的VS
首先新建一个项目
选择属性,如下
在包含目录下,添加我们的include文件路径..\Libraries\include,如下
库目录也相同../Libraries/lib,如下
还有我们的输入
然后点击确定
新建一个hello world文件
里面放两行代码
#include <glad/glad.h>
#include <GLFW/glfw3.h>
执行,出错了
VS掌握的不好,先按照教程新建一个空白项目https://docs.microsoft.com/zh-cn/cpp/build/vscpp-step-1-create?view=vs-2019
删去其它文件,只保留我们的库文件夹,然后创建一个新项目
删去已有的代码
按F5执行报错了,感觉自己宛如智障,
摸索了一个小时,觉得还是自己对include理解不够
比如我上面写的#include <glad/glad.h>,会去我设置的包含目录E:\learn\OpenGL\MyProject\Libraries\include去找,因为我是把所有的文件都放入include文件夹中的,所以应该改成 #include <glad.h>
现在给出正确的做法,由于复制learnopengl-cn网站上的源码,比如这样
这个include 文件夹下是有glad文件夹,glad文件夹下又又这个glad.h文件
所以统一按照它给的方式。
还是前面所说的几个文件。给出文件目录结构,各位可以先按我的文件结构弄好(要不直接复制到ide的lib文件夹下吧)
点击去glad如下,
其它文件夹如下
然后打开VS,创建新项目
打开VS页面如下
文件路径如下
然后就是修改我们的属性
然后新建一个main.cpp文件
复制下面的代码
#include <glad/glad.h>
#include <GLFW/glfw3.h>
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
return 0;
}
像这样
先按F5,看看效果
改成x64,再试下
先把之前提到的glad.c复制进来,再执行看看效果,复制到和我们的main.cpp同一路径下
执行后仍旧报错,看来还是得添加源文件
结果如下
再次执行
不知道搭建成功没有,顶不住了,先到这里吧