确保你的mac有brew,没有的话,看着brew官网
教程。brew就类似应用商场,在线安装app,然后配置软连接,方便增删改查
在安装完brew之后,利用brew在线安装glfw,命令如下,在终端键入并回车即可
brew install glfw
这个步骤只是上网下载代码拷贝进项目,具体步骤如下
参考了某个链接VSCode+CMake搭建OpenGL开发环境
准备 glad
进入下载界面下载 glad,它提供了一个生成器,选择如下:
Language选择C/C++;
Specification 选择 OpenGL;
gl 我这里选择的是 Version 3.3;
Profile 选择 Core.
你的话不一定要遵循我的选择,gl的Version可以在 App Store 下载 OpenGL Extensions Viewer 查看。不同的显示芯片对 opengl 支持版本不同(当然用低版本肯定没问题)。我用的是4.1
然后点击下面的 Generate 进行下载,只需要下载压缩包即可,下载完成后进行解压即可,不需要进行编译,直接在项目中引用源文件即可。
具体拷贝的步骤如下:
将 include 文件夹下的 glad、KHR 拷贝到项目中的 include 文件夹(没有的话进行创建),然后将 src/glad.c 单独拷贝到项目根目录中。
确保vscode安装了Cmake 和Cmake Tools两个插件
输入vscode命令行 CMake:Quick Start 命令帮助快速创建。内容如下,会写cmake的自己写,不会的直接复制即可
cmake_minimum_required(VERSION 3.0.0)
project(HelloGL VERSION 0.1.0)
# 使用 C++ 11 标准
set(CMAKE_CXX_STANDARD 11)
# 添加头文件
set(GLAD_H ${PROJECT_SOURCE_DIR}/include)
set(GLFW_H /usr/local/include)
include_directories(${GLAD_H} ${GLFW_H})
# 添加目标链接
set(GLFW_LINK /usr/local/lib/libglfw.3.dylib)
link_libraries(${GLFW_LINK})
# 执行编译命令
set(SOURCES glad.c main.cpp)
add_executable(HelloGL ${SOURCES})
# 链接系统的 OpenGL 框架
if (APPLE)
target_link_libraries(HelloGL "-framework OpenGL")
endif()
include(CTest)
enable_testing()
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
新建一个名为main.cpp的文件
拷贝以下代码
#include
#include
#include
#include
#include
void framebuffer_size_callback(GLFWwindow *window, int width, int height);
void processInput(GLFWwindow *window);
int main(int argc, const char *argv[])
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#ifdef __APPLE__
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X
#endif
GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "fail to create window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while (!glfwWindowShouldClose(window))
{
processInput(window);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
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);
}
}
编译的话输入命令CMake:Build
想要断点调试,输入命令 Cmake:Debug
想要直接运行,输入命令 CMake:Run without Debugging
别在配置环境上花太多时间,=。=不然得不偿失