OpenGL - Mac + VSCode环境搭建

准备环境

  • Mac
    macOS Monterey 12.x,intel处理器,x86_64架构


  • VSCode
    插件 C/C++和Code Runner
  • Xcode
    AppStore最新版本即可
  • GLFW
    GLFW是一个免费的、开源的、多平台的OpenGL、OpenGL ES和Vulkan应用程序开发库。它提供了一个简单的、平台独立的API,用于创建窗口、上下文和界面、读取输入、处理事件等。
    打开官网点击Download,下载Mac版编译好的library;

编码

项目目录


将下载好的glfw3.h、glfw3native.h、libglfw3.a放到相应目录下

代码

测试代码如下

#include 
#include 

using namespace std;

int main(void)
{
    GLFWwindow* window;


    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();

    return 0;
}

启动

按F5,选择clang++的启动方式


tasks.json的配置如下

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang++ 生成活动文件",
            "command": "/usr/bin/clang++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "${fileDirname}/depends/libglfw3.a", // 指定glfw包
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "--include-directory=${fileDirname}/depends/include", // 指定目录
                "-framework", "Cocoa", "-framework", "OpenGL", "-framework", "IOKit", "-framework", "CoreVideo" // 引入iOS框架

            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

启动效果

出现如下效果,openGL的window已经创建完毕,表示成功了~


我们尝试着画一个三角形,在这里加入如下代码

 while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);
        // new code
        glBegin(GL_TRIANGLES);
        glVertex2f(-0.5f, -0.5f);
        glVertex2f(0.0f, 0.5f);
        glVertex2f(0.5f, -0.5f);
        glEnd();

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

F5运行,awesome~


GLEW

不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。

下载

brew install glew

引入

下载好后在/usr/local/Cellar/中找到所需要的静态库

然后在项目和配置文件中引入

然后新增如下代码

F5运行



awesome~

你可能感兴趣的:(OpenGL - Mac + VSCode环境搭建)