CLion:OpenGL + GLAD配置

测试环境:CLion + GLFW3 + GLAD + MinGW64

  1. 下载glfw,本次实验中直接下载编译好的64位库文件。https://github.com/glfw/glfw/releases/download/3.3/glfw-3.3.bin.WIN64.zip

  2. 选择OpenGL版本,访问https://glad.dav1d.de/,选择对应的版本和模式,然后点击GENARATE按钮,选择glad.zip即可。

    CLion:OpenGL + GLAD配置_第1张图片
    配置glad
    CLion:OpenGL + GLAD配置_第2张图片
    生成
    CLion:OpenGL + GLAD配置_第3张图片
    下载glad.zip

  1. 新建工程,然后新建includelib目录。第一步,解压glfw-3.3.bin.WIN64.zip文件,解压后如下图所示:

    CLion:OpenGL + GLAD配置_第4张图片
    glfw解压目录
    include目录下GLFW文件夹复制到工程中include目录下;把lib-mingw-w64目录下所有文件复制到工程中lib目录下。
    第二步,解压上面生成的glad.zip,解压后如下图所示:
    CLion:OpenGL + GLAD配置_第5张图片
    glad解压目录
    include目录下所有文件夹复制到工程中include目录下;把src/glad.c复制到工程中。
    最终工程结构为:
    CLion:OpenGL + GLAD配置_第6张图片
    image.png

  2. 修改CMakeLists.txt,添加头文件和库,修改后内容为:

cmake_minimum_required(VERSION 3.14)
project(glfw C)

include_directories(include)
link_directories(lib)

set(CMAKE_C_STANDARD 99)

add_executable(glfw main.c  glad.c)

target_link_libraries(glfw glfw3 opengl32)
  1. 测试。在使用OpenGL前需要初始化OpenGL版本,否则运行程序会闪退。初始化代码为:
if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){
        printf("Failed to initialize OpenGL context");
    }

以下是测试代码和运行结果:

#include 
#include 
#include

#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

void size_callback(GLFWwindow *window, int width, int height) {
    //printf("width: %d\theight: %d\n", width, height);
    glViewport(0, 0, width, height);
}

int main() {
    GLFWwindow *window;
    glfwInit();
    window = glfwCreateWindow(1024, 600, "Demo", NULL, NULL);
    glfwSetWindowSizeCallback(window, size_callback);
    if (!window) {
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){
        printf("Failed to initialize OpenGL context");
    }

    printf("OpenGL %s, GLSL %s", glGetString(GL_VERSION), glGetString(GL_SHADING_LANGUAGE_VERSION));

    while (!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_LINE_STRIP);
        glVertex2f(0.1, 0.1);
        glVertex2f(0.3, 0.5);
        glVertex2f(0.4, -0.1);
        glEnd();

        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}

CLion:OpenGL + GLAD配置_第7张图片
运行结果

注意:当使用VS编译器时,添加 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")可以隐藏命令行窗口,使用MinGW64时,该指令无效。

你可能感兴趣的:(CLion:OpenGL + GLAD配置)