• OpenGL运行环境的搭建(GLFW+GLAD+OpenGL以及在Vistual Studio中的 配置)


    整体运行环境框架

    OpenGL是Windows平台在安装VS以后自带的,还需要一下其他的库:
    GLFW(窗口和处理用户输入)+GLAD(解决繁琐的检索函数位置问题)+CMake(从源码编译GLFW库)

    最后将这些库在VS的项目-属性中进行配置,引入头文件后编译成功即为环境搭建完成。

    GLFW

    GLFW是用于OpenGL的由C语言编写的库。

    下载源码版:GLFW的下载地址

    作用

    GLFW可以:

    1. 创建OpenGL上下文
    2. 定义窗口参数
    3. 处理用户输入

    使用CMake编译

    CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。

    CMake需要源代码文件夹(这里使用上面下载的glfw文件根目录)和用于存储二进制文件的目标文件夹(新的空文件夹)。

    在这里插入图片描述

    配置步骤

    1. 选定源文件和目标文件夹,点击Configure按钮。
    2. 选择generator,这里选择Vistual Studio。
    3. 保留默认配置,再点击Configure按钮。
    4. 点击Generate按钮,再build文件夹就会生成项目文件。
    5. 在build文件夹打开GLFW.sln(使用Visual Studio打开,里面已经包含了解决方案的配置),点击build solution选项(生成->生成解决方案)。
    6. 编译好的库文件可以直接在build/src/Debug/glfw3.lib找到。

    编译器如何找到库和头文件的位置?

    1. 创建一个文件夹,里面包含Libs和Include两个文件夹,分别存放OpenGL工程用到的所有第三方库和头文件。
    2. 每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录:link我们的项目和刚刚编译的库文件——项目-属性按照下图配置。

    在这里插入图片描述

    1. 为了编译的时候能链接GLFW库,把GLFW link到project。
    2. 同时由于Windows系统在安装VS后,自带opengl32.lib,可以直接将该库link到project中。

    在这里插入图片描述

    GLAD

    使用GLAD的必要性——存储函数位置的操作太繁琐

    OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。为了获得函数的位置,需要将其保存到一个函数指针中来进行使用。

    //define the function's prototype
    typedef void (*GL_GENBUFFERS)(GLsizei, GLuint*);
    //find the function and assign it to a function pointer
    GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
    //function can now be called as normal
    unsigned int buffer;
    glGenBuffers(1,&buffer);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上面的声明并查找指针的过程过于繁琐,而GLAD就可以解决这个问题。

    GLAD安装方法

    进入GLAD的web service,按照下图配置,点击Generate。

    在这里插入图片描述

    将得到的zip解压后,将Include下的两个文件夹放到刚才创建的Include文件夹中,然后将glad.c文件添加到项目工程中。

    在这里插入图片描述

    如图所示,编译通过,环境配置成功。

    补充

    1. 有些库是由lib和dll共同组成的,lib会存储dll的入口函数,这时还要按照下述配置配置dll的存放目录。
      在这里插入图片描述
    2. cmake之前的源代码的include文件包含.h,用于在Vistual Studio编译器中查找相应位置。
  • 相关阅读:
    宏工科技数智方案现先进陶瓷展,VR体验数字工厂引关注
    利用根升余弦滤波器和整数倍内插的多相结构生成含采样频偏的过采样信号
    可以用爱因斯坦求和替代的那些矩阵运算
    RORγ 反向激动剂-XY101 小分子化合物
    【源码解析】Spring源码解读-bean的加载
    理论+实践,彻底掌握Vue自定义指令
    实时降噪(Real-time Denoising):NVIDIA Real-time Denoisers 源码剖析
    mybatis复习
    NoSQL数据库(林子雨慕课课程)
    android 动画
  • 原文地址:https://blog.csdn.net/weixin_43399489/article/details/126859003