美文网首页
OpenGL环境搭建

OpenGL环境搭建

作者: Time_Looper | 来源:发表于2020-05-11 00:45 被阅读0次

    最近一直在看OpenGL相关的内容,网上有一个非常好的网站可以学习网站,目前的计划是按照这个网站先把OpenGL基础知识掌握
    英文版地址:https://learnopengl.com/
    中文版地址:https://learnopengl-cn.github.io/

    项目结构和开发环境配置

    为什么使用CMake?
    通过CMake可以生成不同环境下的项目配置包括vs,make,xcode等
    依赖的三方库也都是使用CMake进行构建
    另外就是练习自己对CMake的使用

    • 项目目录结构如下,其中除了vendor目录主要放三方依赖库
    • 项目基础CMake配置
    cmake_minimum_required(VERSION 3.0)
    
    project(LearnOpenGL)
    
    set(CMAKE_CXX_STANDARD 11)
    
    # 设置编译导出路径
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
    
    # 主要针对去除msvc下printf等函数的警告
    if(WIN32)
    add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
    endif(WIN32)
    
    set(HEADERS
        # 添加头文件
    )
    
    set(SOURCES
        # 添加源代码文件
    )
    
    include_directories(include src)
    
    # 设置资源文件
    file(GLOB_RECURSE RESOURCES "res/*.vert" "res/*.frag", "res/*.png")
    source_group("Resources" FILES ${RESOURCES})
    
    # 配置最终生成的可执行程序的文件名以及依赖的源码和资源文件
    add_executable(LearnOpenGL ${RESOURCES} ${SOURCES} ${HEADERS})
    
    # 设置链接生成可执行程序时依赖的库
    target_link_libraries(LearnOpenGL)
    
    glfw获取
    • 进入vendor目录执行以下命令获取glfw源码
     git clone https://github.com/glfw/glfw.git
    
    • 完成后看到如下的内容
    • 然后设置目标文件的链接依赖,将target_link_libraries改成如下的配置
    target_link_libraries(LearnOpenGL glfw)
    
    glad获取
    • 使用在线服务生成相应的代码传送门(我的选择如下,仅供参考)
    • 下载glad
    • 在vendor目录下创建glad,然后将下载好的代码包解压放入
    • 在目录下创建CMakeLists.txt文件配置glad,以下是我的配置(仅供参考)
    cmake_minimum_required(VERSION 3.0)
    
    project(glad VERSION 0.1.33 LANGUAGES C)
    
    set(GLAD_SOURCES src/glad.c)
    file(GLOB_RECURSE GLAD_HEADERS "include/*.h")
    
    add_library(glad STATIC ${GLAD_SOURCES} ${GLAD_HEADERS})
    
    target_include_directories(glad PUBLIC include)
    
    引用glfw和glad进入项目中

    引用这两个库就比较简单了,在项目的CMakeLists.txt进行如下配置

    # 加入glad进入项目
    add_subdirectory(vendor/glad)
    
    # 加入glfw我使用动态库的方式,也可改成静态库
    set(BUILD_SHARED_LIBS ON)
    # 这个参数主要是去除生成glfw的api文档
    set(GLFW_BUILD_DOCS OFF)
    add_subdirectory(vendor/glfw)
    
    # 修改可执行程序链接库,这里只需要将上面的基础CMakeLists.txt中的最后一行进行修改
    target_link_libraries(LearnOpenGL glad glfw)
    
    验证环境是否正常
    • 在src目录下新建main.cpp写入如下代码
    #ifdef _WIN32
    #define APIENTRY __stdcall
    #endif
    
    #include <glad/glad.h>
    #include <GLFW/glfw3.h>
    
    #include <iostream>
    
    static const int SCREEN_WIDTH = 800;
    static const int SCREEN_HEIGHT = 600;
    
    int main(int argc, char* argv[]) {
        // initialize
        glfwInit();
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
        glfwWindowHint(GLFW_SAMPLES, 4);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
        // fix compilation on OS X
    #ifdef __APPLE__
        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    #endif
    
        auto window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Learn OpenGL", nullptr, nullptr);
        if (!window) {
            std::cout << "Failed to create window." << std::endl;
            glfwTerminate();
            return -1;
        }
        glfwMakeContextCurrent(window);
        
        if (!gladLoadGL()) {
            std::cout << "Failed to initialize GLAD." << std::endl;
            glfwTerminate();
            return -1;
        }
    
        std::cout << glGetString(GL_VERSION) << std::endl;
    
        while (!glfwWindowShouldClose(window)) {
            glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
            glClear(GL_COLOR_BUFFER_BIT);
    
            glfwSwapBuffers(window);
            glfwPollEvents();
        }
        glfwTerminate();
    
        return 0;
    }
    
    • 在项目CMakeLists.txt中修改项目源文件
    set(SOURCES
        # 添加源代码文件
        src/main.cpp
    )
    
    • 编译运行项目如果看到这样的窗口那么说明配置成功啦
    总结

    经过这么一番折腾之后,对于CMake管理C/C++项目更加熟练
    另外我的编辑器没有使用vs而是使用的VSCode,也学会了如何利用VSCode+CMake来开发C/C++项目
    经过以上的准备工作,接下来可以愉快的学习使用OpenGL啦
    最后加油吧,少年

    相关文章

      网友评论

          本文标题:OpenGL环境搭建

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