• 计算机图形学之应用程序


    一、图形编程的发展

    1.早期的图形编程
    在这里插入图片描述
    2.图形标准的产生
    在这里插入图片描述
    3.固定管线
    在这里插入图片描述

    二、GPU渲染管线

    渲染管线的功能:决定在给定虚拟相机、三维物体、光源、照明模式,以及纹理等诸多条件的情况下生成或绘制一幅二维图像的过程。
    在这里插入图片描述
    流水线中的三个阶段
    在这里插入图片描述
    1.应用阶段
    将需要在屏幕上显示出来绘制的几何体,也就是绘制图元,比如点、线、矩阵等输入到绘制管线的下一阶段。具体包括图元的顶点数据,摄像机位置,光照纹理等参数。这里是在CPU中机型计算的。
    在这里插入图片描述
    2.几何阶段
    需要将顶点数据最终进行屏幕映射。这其中需要:

    • 将各个图元放入到世界坐标系中,也就是进行模型变换;
    • 根据光照纹理等计算顶点处材质的光照着色效果;
    • 根据摄像机位置、取景范围进行观察变化和裁剪。
    • 最后进行屏幕映射,也就是把三维模型转换到屏幕坐标系中。

    3.光栅化阶段
    光栅化部分的输入是经过变化和投影后的顶点,颜色以及纹理坐标,他的工作是给每个像素正确配色,一遍绘制整幅图形。由于输入的是三角形顶点,所以需要根据三角形表面的差异,逐个遍历三角形计算各个像素的颜色值。之后根据其可见性等进行合并得到最后的输出。
    在这里插入图片描述
    GPU渲染管线
    在这里插入图片描述
    1.几何阶段
    (1)顶点着色器
    在这里插入图片描述
    (2)几何、曲面细分着色器
    在这里插入图片描述
    (3)裁剪
    在这里插入图片描述
    (4)屏幕映射
    在这里插入图片描述
    2.光栅化阶段
    在这里插入图片描述

    (1)三角形设置:将顶点连接成三角形网格。
    在这里插入图片描述
    (2)三角形遍历:根据顶点信息,计算得到覆盖三角网格的像素位置。对应的这些像素就生成一个片元。而片元中每个像素的状态都是根据三角形三个顶点的信息进行插值得到的。
    在这里插入图片描述
    (3)片元着色:根据数据信息计算每个片元的颜色值。
    在这里插入图片描述
    (4)片元操作:融合阶段
    在这里插入图片描述

    三、着色器编程

    1.着色器语言
    在这里插入图片描述
    2.GLSL
    OpenGL的着色器语言GLSL,也就是OpenGL Shading Language.

    • 顶点着色器Vertex Shader
    • 几何着色器Geometry Shader
    • 曲面细分着色器Tessellation Shader
    • 片元着色器Fragment Shader

    在OpenGL中使用着色器的流程:

    • 创建着色器对象
    • 源码关联到着色器对象
    • 编译着色器
    • 创建一个程序对象
    • 将着色器对象关联到程序对象

    与OpenGL的通信
    在这里插入图片描述
    3.EBO、VBO和VAO
    EBO(Element Buffer Object)也叫做IBO(Index Buffer Object)索引缓冲对象。这个缓冲区主要用于存储顶点索引信息
    在这里插入图片描述
    VBO(Vertex Buffer Object)顶点缓冲区对象,主要用来存储顶点的各种信息。好处是模型的顶点信息放进VBO,这样每次画模型时,数据不在从CPU的势力范围内存里取,而是直接从GPU的显存里取,从而提高效率。
    在这里插入图片描述
    VAO(Vertex Array Object)顶点数组对象,是一个保存了所有顶点数据属性的状态组合,它存储了顶点数据的格式以及顶点数据所需要的VBO对象的引用。
    在这里插入图片描述

  • 相关阅读:
    JVM (四)GC过程
    [深度学习]卷积神经网络的概念,入门构建(代码实例)
    Django之视图
    PostgreSQL JIT(Just-In-Time Compilation)With LLVM 的实现原理
    超市促销叫卖的语音是怎么做的?介绍简单小方法,方便又快捷
    录制完成的长视频如何快速分割为3个相同的视频片段
    上位机通过Modbus转Profinet网关与CGV300变频器通讯案例
    算法竞赛入门【码蹄集新手村600题】(MT1201-1250)
    图解 LeetCode 算法汇总——二分查找
    彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
  • 原文地址:https://blog.csdn.net/gghhb12/article/details/126083244