zoukankan      html  css  js  c++  java
  • 图像从程序到GPU再到屏幕显示的流程:GPU渲染管线

    1. 模型坐标变换

    这个阶段主要是将各个物体的建模坐标系转换到世界坐标系。在程序中不同物体他们建模坐标系是不一样,有些适合球坐标有些适合直角坐标。但是为了将他们整合在一起,最终程序需要将他们转换到世界坐标。在游戏里面你开第一人称视角,那就是以你为原点设计了一个建模坐标系,但是你开枪击中别人以及你位于地图哪个位置。这些都是需要转换到世界坐标中统一进行计算
    在这里插入图片描述

    2. 视图变换

    虽然经过步骤1可以把所有物体都转换到统一的世界坐标。但是这些物体在屏幕上显示的只是某个视角的所观察到的。你打游戏开第一人称视角,移动鼠标就能看到不同的场景,不同的角度看到物体所在的位置是不一样的。这个就是视图变换的作用。当然到底要变换到怎样的视角不同的标准中是不一样的。
    在这里插入图片描述

    3. 顶点着色,曲面细分

    在前面两个步骤虽然确定了各个物体在视图中的位置。但是并没有确定模型各个点的颜色。这个步骤就需要根据设置的颜色或者光照效果等属性来确定某个顶点的颜色。这个顶点颜色会被后面的光栅化操作使用,因为我们看到的是面而不是顶点。光栅化就是要根据顶点的颜色等属性计算出某个区域的颜色属性。曲面细分就是原先的模型可能就是一些稀疏的顶点构成,需要对这些稀疏的点进行插值。使得点变得更密集。
    在这里插入图片描述
    着色器语言主要是需要显卡提供驱动,一般是适配OpenGL或DirectX的驱动。
    在这里插入图片描述
    在这里插入图片描述
    着色器语言一般是文本形式,不会对它进行编译。是到运行的时候GPU才编译执行它。
    在这里插入图片描述

    4. 裁剪

    屏幕有大小,所以要对图像进行裁剪。只显示适合屏幕大小的图形。

    5. 光栅化

    在这里插入图片描述

    6. 片元融合

    在步骤5中已经得到了某个区域的颜色和深度值等信息。但是有时候会多个物体相互重合,比如某些透明物体重合。那么我们需要对重合部分进行融合计算。
    在这里插入图片描述
    总结下前面几步的关系,先是得到顶点,然后得到三角形,然后对三角形进行分片。然后对分片着色,最后对重合的片元进行颜色融合。
    在这里插入图片描述

    参考文献:
    [1] 计算机图形学

    知乎 https://www.zhihu.com/people/yuanmuou/activities
  • 相关阅读:
    常用排序算法及java语言实现
    机器学习实战笔记(python3实现)01--概述
    笔试错题--(字符串常量池和JVM运行时数据区)
    笔试错题(典型题)
    java进阶--java网络编程
    01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)
    数据库3(DBUtils)
    数据库2(JDBC、DBUtils)
    数据库1(数据库、表及表数据、SQL语句)
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/ailitao/p/11047278.html
Copyright © 2011-2022 走看看