跟着官网搭建OpenGL的开发环境,全程在Windwos 10上完成
官网的文档地址在这里,基本跟着做就行,也就是导入依赖那里和我不一样,我照那个样子操作失败了,于是自己导入了依赖。
一、下载 VS 2019
当然,VS的版本你可以自己选择,但是最好不要太新,否则其它的工具可能没有适配的版本。
二、下载GLFW
去GLFW的官网下载源代码,看清楚了是源代码,就是下图这个:
后面再说需要这里面的什么东西,先解压放到合适的文件夹下。
三、下载CMake
去CMake的官网下载如下图的压缩包:
- 解压,打开bin文件夹下面的cmake-gui.exe,这样就打开了Cmake的GUI
- 点击Browse Source按钮选择之前下载的GLFW解压后的源文件夹
- 在合适的地方新建Cmake的输出目录,点击Browse build选择它
- 点击Configure,如果没有错误,那么,选择自己的VS版本,我这里是2019,Finish;如果有有错误检查自己是否下载错了GLFW,要下载的是Source而不是二进制。
- 点击Generate,就会在选择的目标文件夹中生成项目,如下所示:
- 使用VS 2019打开GLFW.sln,生成解决方案,就可以在src/DeBug中找到重要的依赖 — glfw3.lb了。
下载GLAD
官网这里还有导入依赖的操作,我这里操作不成功,搞不懂VS,所以后面会提到自己添加依赖的方式(不要着急)。在在线服务下载GLAD。
- 我说明一下自己选择的内容:
- 点击Generate后,下载zip文件,解压到合适的文件夹下。
四、导入依赖
说明一下,依赖都包含以下的部分:
-
GLFWb本身的依赖位于glfw-3.3.4/include/GLFW下
-
生成的glfw3.lib库
-
GLAD的依赖,include下的两个文件夹
最后的全部依赖应该如下: -
创建一个空的C++项目
-
把上面的依赖复制,分别粘贴到VS 2019项目依赖的目录,至于这个依赖的目录怎么看:
-
在VS 2019中 项目 > 属性中做如下选择:
-
查看这两个属性对应的计算的量,将上面提到的依赖复制到这些文件夹下。记得放在x64和x86都要放置,否则可能会找不到。
-
在链接器中加入如下图的依赖
-
依赖加载完成,将GLAD下的src文件夹中的glad.c加入创建的C++项目的源代码下,编译不报错就是依赖添加成功了。
创建一个窗口
在源代码下创建一个cpp文件,代码官网有,如下:
#include <glad/glad.h>
#include <glfw3.h>
// 在调整窗口大小的时候发生回调
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
glViewport(0, 0, width, height);
}
// 在每一帧检测用户的按键操作
void processInput(GLFWwindow* window) {
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
{
glfwSetWindowShouldClose(window, true);
}
}
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
// cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glfwMakeContextCurrent(window);
// 为了能够持久显示,创建了一个循环
while (!glfwWindowShouldClose(window))
{
// 检测按键操作
processInput(window);
// 渲染,清除屏幕颜色,设置为glClearColor中设置的颜色
// 检查并调用事件,交换缓冲
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
- 编译 > 生成解决方案 > 运行即可。
搭个环境就花了半个小时,写个博客花了一个多小时,233。