美文网首页C语言
CLion:OpenGL + GLAD配置

CLion:OpenGL + GLAD配置

作者: txfly | 来源:发表于2019-06-25 16:44 被阅读0次

本文主要介绍在CLion中开发OpenGL项目时,glfw和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即可。

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

    glfw解压目录 把include目录下GLFW文件夹复制到工程中include目录下;把lib-mingw-w64目录下所有文件复制到工程中lib目录下。
    第二步,解压上面生成的glad.zip,解压后如下图所示: glad解压目录 把include目录下所有文件夹复制到工程中include目录下;把src/glad.c复制到工程中。
    最终工程结构为: 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 <stdio.h>
#include <glad/glad.h>
#include<GLFW/glfw3.h>

#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;
}
运行结果
注意:当使用VS编译器时,添加#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")可以隐藏命令行窗口,使用MinGW64时,该指令无效。

版权声明:本文为「txfly」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.jianshu.com/p/fd4cc689a20d

相关文章

网友评论

    本文标题:CLion:OpenGL + GLAD配置

    本文链接:https://www.haomeiwen.com/subject/ejhnqctx.html