• 第1章 入门


    当今,图形编程是基于着色器的,也就是说,有些程序是基于C++或Java等标准程序语言编写的,并运行在中央处理器上(CPU);另一些是用专用的着色器语言编写的,直接运行在图形处理单元(GPU)上。

    1.1 语言和库

    • C++ 开发环境
    • OpenGL/GLSL
    • 窗口管理库
    • 扩展库
    • 数学库
    • 纹理图像加载库

    1.1.1 C++

    本文推荐使用Microsoft GVisual Studio作为C++开发环境

    1.1.2 OpenGL/GLSL

    本书假定作者至少有一个支持4.3版本OpenGL的显卡。如果你不确定你的GPU支持哪个版本的OpenGL,网上有免费的应用程序,其中一个是GLView来查找答案。

    1.1.3 窗口管理库

    OpenGL实际上并不是把图像直接绘制到计算机屏幕上,而是将之渲染到一个帧缓冲区,然后由计算机将帧缓冲区中的内容绘制到屏幕上的一个窗口中。有不少库都支持这一部分工作。一个选择是使用操作系统提供的窗口管理功能,比如Microsoft Windows API。但这不实用,因为需要很多底层的编码工作。GLUT库曾是一个流行的库,但现在已经被弃用了。它的一个现代化变体是freeglut库。其他相关的选项还有CPW库、GLOW库、GLUI库等。
    GLFW是最流行的选择之一,也是本书中选择使用的。它内置了对Windows、macOS、Linux和其他操作系统的支持。

    1.1.4 扩展库

    扩展库有Glee、GLLoader和GLEW,以及新版的GL3W和GLAD。常用的是GLEW。这个名称代表OpenGL extension wrangler,即OpenGL扩展库。GLEW支持各种操作系统,包括Windows、macOS和Linux [GE20],但它并不是完美的选择。例如,它需要一个额外的动态链接库。最近,很多开发者选择GL3W或者GLAD。它们的优势是可以自动更新,但是需要Python环境。本书使用GLEW。它可以在其官网下载。附录中给出了安装和配置GLEW的完整说明。

    1.1.5 数学库

    3D图形编程会大量使用向量和矩阵代数。常常和OpenGL一起使用的两个这样的库是Eigen和vmath。后者在流行的《OpenGL超级宝典(第7版)》中使用。

    本书使用OpenGL Mathematics数学库,一般称作GLM。它是一个只有头文件的C++库,兼容Windows、macOS和Linux [GM20]。GLM命令能很方便地遵循和GLSL相同的命名惯例,使得来回阅读特定应用程序的C++和GLSL代码时更容易。GLM可以在其官网下载。

    GLM可提供与图形概念相关的类和基本数学函数,例如矢量、矩阵和四元数。它还包含各种工具类,用于创建和使用常见的3D图形结构,例如透视和视角矩阵。

    1.1.6 纹理图像加载库

    本书中使用的纹理图像加载库是SOIL2——SOIL的一个更新的分支版本。

    1.1.7 可选库

    在本书中,我们将展示如何从零开始实现一个简单的OBJ模型加载器。然而,正如你将看到的,它没有处理OBJ标准中很多可用的选项。有一些更复杂的、现成的OBJ模型加载器可供选择,比如Assimp和tinyobjloader。本书的例子只会使用书中介绍和实现的简单模型加载器。

  • 相关阅读:
    程序员换新电脑资料准备
    R语言七天入门教程六:文件相关操作
    执行程序时提示cuBLAS Error: cublasGemmStridedBatchedEx failed.
    K8S:K8S自动化运维容器Docker集群
    拉链表的展开算法
    R语言中实现马尔可夫链蒙特卡罗MCMC模型
    JS中的构造函数
    给 Pod 添加 DNS 记录
    RTMP协议解析
    Java框架随笔
  • 原文地址:https://blog.csdn.net/qq_35662333/article/details/133918983