(超级详细)如何在Mac OS上的VScode中配置OpenGL环境并编译
文章目录
- 安装环境
- 下载GLAD与GLFW
- 一、下载GLAD
- 二、下载GLFW
- 项目结构配置
- 测试程序与项目的编译
- 测试可执行文件HelloGL
安装环境
机器:macbook air
芯片: M1芯片(arm64)
macOS:macOS Ventura 13.4
VScode version:April 2023 1.78
下载GLAD与GLFW
一、下载GLAD
1. 从GLAD的在线服务下载所需的文件,参数选择如下,可根据自己的需要进行更换:
2. 点击GENERATE生成
3. 下载相应的压缩包
4. 解压缩,正确的目录结构如下所示:
glad ├── include │ ├── KHR │ │ └── khrplatform.h │ └── glad │ └── glad.h └── src └── glad.c
至此,GLAD的下载结束。
二、下载GLFW
1. GLFW官网处下载,可以选择下载源码然后自己进行编译,也可以选择直接下载编译好的库文件。从源码开始编译的话更加灵活,能够灵活适配不同的操作系统,也能让自己对GLFW的源码结构有一个基本的了解。出于方便起见本文选择了后者。
2. 下载下来的压缩包如下所示,
3. 解压压缩包,得到目录结构如下的文件:
├── LICENSE.md ├── README.md ├── docs ├── include ├── lib-arm64 ├── lib-universal └── lib-x86_64
该目录下主要用到两个目录。
首先,根据自己的芯片型号选择lib-xxx,如果你是intel(x86)的芯片,那么就选择lib-x86-64,如果你是新版的m1或者m2芯片(arm)那么就选择lib-arm64。除此之外,lib-universal据说是两种芯片类型都能兼容,但由于没有机器,作者并未进行测试,有兴趣的同学可以自行测试一下。
其次,除了lib-xxx外,还需要用到的一个目录是include目录中的文件,剩下的文件和目录可以删除,不予保留。
至此,GLFW的下载结束。
项目结构配置
创建工作目录new_openGL,并创建include、lib和src三个文件夹,并将GLAD和GLFW目录下的文件移动到相应的目录下:
glfw-3.3.8.bin.MACOS/include/GLFW/ -> new_openGL/include/GLFW/ glfw-3.3.8.bin.MACOS/lib-arm64/* -> new_openGL/lib/ glad/include/glad/ -> new_openGL/include/glad/ glad/include/KHR/ -> new_openGL/include/KHR/ glad/src/glad.c ->. new_openGL/src/glad.c
移动完成后,正确的文件目录结构如下所示:
new_openGL ├── include │ ├── GLFW │ │ ├── glfw3.h │ │ └── glfw3native.h │ ├── KHR │ │ └── khrplatform.h │ └── glad │ └── glad.h ├── lib │ ├── libglfw.3.dylib │ └── libglfw3.a └── src └── glad.c
至此,项目结构配置完成。
测试程序与项目的编译
1. 项目的src/目录下创建文件main.cpp,并写入以下程序:
#include #include #include #include #include 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); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); //MAC OSX needs GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); if (window == NULL) { std::cout