OpenGL开发环境配置

  • GLFW(官网)
    GLFW是一个在桌面环境下支持OpenGL、OpenGL ES、Vulkan开发的库
    提供的一套简单的API支持创建窗口、context、surface及接收鼠标键盘输入
    跨平台支持windows、MacOS、Linux(X11、Wayland)
  • glad(官网)
    支持Vulkan/GL/GLES/EGL/GLX/WGL等各种图形接口在各个平台下的函数生成
    (简单来说就是生成一个头文件和实现可以直接调用OpenGL之类的函数)

上面两个库的安装方式可以下载二进制或源码编译(麻烦耗时)
我这边直接用vcpkg+clion的配置方式直接用起来

  1. 打开CLion配置vcpkg[详情](https://blog.jetbrains.com/clion/2023/01/support-for-vcpkg-in-clion/)
    image

  2. 通过vcpkg安装glfw、glad

    vcpkg install glad:x64-windows glfw3:x64-windows
    
  3. 在CLion下创建一个cmake工程,通过vcpkg工具配置glfw、glad
    image

  4. 修改CMakeLists.txt添加上glfw、glad的支持
    image

  5. 创建一个窗口看看是否两个库都能正常跑起来

#include <glad/glad.h>
#include <GLFW/glfw3.h>

void framebufferSizeChanged(GLFWwindow *glfwWindow, int width, int height);
void processInput(GLFWwindow *glfwWindow);

int main() {
    //初始化glfw
    if (!glfwInit()) {
        return -1;
    }

    //创建窗口
    GLFWwindow *glfwWindow = glfwCreateWindow(640, 480, "glfw_window", NULL, NULL);
    if (!glfwWindow) {
        glfwTerminate();
        return -1;
    }

    //将当前的context关联到glfwWindow
    glfwMakeContextCurrent(glfwWindow);
    glfwSetFramebufferSizeCallback(glfwWindow, framebufferSizeChanged);

    //glad需要要在glfwMakeContextCurrent后才能初始化
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        glfwTerminate();
        return -1;
    }

    //消息循环
    while(!glfwWindowShouldClose(glfwWindow)) {
        processInput(glfwWindow);
        glClear(GL_COLOR_BUFFER_BIT);
        glClearColor(1.0, 1.0, 0, 1.0);
        glfwSwapBuffers(glfwWindow);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

void framebufferSizeChanged(GLFWwindow *glfwWindow, int width, int height) {
    glViewport(0, 0, width, height);
}

void processInput(GLFWwindow *glfwWindow) {
    if (glfwGetKey(glfwWindow, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
        glfwSetWindowShouldClose(glfwWindow, true);
    }
}

posted @ 2023-05-27 10:10  zhaowenwei  阅读(290)  评论(0编辑  收藏  举报