入门图形学:图形学原理(二)

        紧接上一篇:https://blog.csdn.net/yinhun2012/article/details/79865679

        这篇我们了解一下“显示处理器”,也称为GPU,显卡,视觉处理器等等,也就是做图像处理工作的微处理器芯片。我们对显卡应该不陌生,毕竟我们玩游戏都需要购买显卡,那么选购显卡就成了需要考虑的问题,即想价格便宜又想性能高,价格看下标价就行了,性能就不那么好判断了,我们必须了解显卡所有的参数以及参数后面的作用才能判断,比如通俗一点的显卡参数如下:

        1.显卡构架,越是先进的构架效能越高,比如nvidia的显卡构架比较有名的就是gtx750ti和gtx9系列的maxwell构架,和目前gtx10系的pascal构架(顺便说一下gtx750ti简直神卡,匹配9系性能,价格却低一大截,目前steam平台统计gtx750ti使用者最多)。

        2.流处理器(stream processors简称sp)数量,同代同构架下显卡流处理器越多性能越好,比如当年的hd4830就有800sp和640sp的数量差别,800sp就更好(我当年买的hd4830 640sp,因为800sp的贵100,js开核后炒的)。

        3.核芯频率,这个其实跟cpu的核芯频率一样,同代同构架下,频率越高越好,当然这个还可以超频。

        4.显存和位宽,前面我们谈到了帧缓存,就是需要存储器进行储存,这里显存就起到了这个作用,显存当然是必须要大到游戏够用才好了,同时GDDR5显存也有位宽之分,目前主流的256位宽允许一个时钟周期传送256bit数据,这就决定着显存的速度,当然是越高越好。

        5.光栅处理单元,前面我们形象的表示一根斜线就是进过光栅化后的像素点数组,光栅单元就是用来处理这种事情的。

        顺便放一张gpuz的图片,以便大家详细观察下显卡的参数,如下图:

        

        接下来说下显卡的发展史,看一下显卡从无到有再到现在如此标准化的进程。

        中央处理器CPU大家都知道,很早期电脑基本上就靠这个东西做运算,不论是数据运算,还是图形显示都靠这个。早期的显示器像素信息更新都是靠着cpu来计算每个像素的变化,计算完毕后通过I/O总线传递到视频卡的帧缓存中,然后刷新图像。这么一来,可以想象假如帧缓存数据非常大(分辨率高颜色位数高),那么CPU处理起来比较耗时,那刷新率就非常低了。这时候设计一个解放CPU耗时运算的专门处理图形的处理芯片就很有必要了,图形加速处理器GPU就应运而生,我们只需要通过高速I/O总线将数据传递给GPU,然后GPU进行像素变化计算后刷新图像。这样一来,CPU和GPU就各自分工明确,一个专门处理复杂逻辑运算,一个专门处理帧缓存图形数据,以后的PC硬件发展基本就沿着这个路线。

        图形处理器GPU是专门设计处理图形的,它执行图形任务比CPU快许多,现在一般图形处理器一秒钟可以处理几千万顶点和光栅化几亿甚至几十亿的片段(ps:这里我解释一下这两个参数的意义,一个游戏中各种模型场景都是顶点和贴图构成的,比如我们操作一个角色不断奔跑和打怪,那么这个模型的顶点就是不断的运动的,假设一个角色有10000个顶点,1s中运动了1m那么顶点插值运算中就必须依靠处理器的定点处理能力对角色的每个顶点的坐标进行变换,再说下片段(现阶段你就认为是像素点),一个1000*1000分辨率的屏幕1s中刷新60帧,那么就必须更新60000000像素点,假如分辨率更好刷新率更好,那么光栅几亿甚至几十亿的片段能力就很必要了)。

        下面列举一下每一代图形处理器的能力:

        1.第一代图形处理器(nvidia的tnt2,ati的rage和3dfx的voodoo3),这些图形处理器能够光栅化变换前的三角形和使用一两个纹理,但是并没有变换三维顶点的能力,顶点变换的计算还是得CPU处理。

        2.第二代图形处理器(nvidia的geforce255和geforce2,ati的radeon7500和s3的savage3d),这些图形处理器从CPU那里承担了顶点变换和光照的工作(Transformation and lighting),opengl和directx7都支持硬件顶点变换。

        3.第三代图形处理器(nvidia的geforce3和geforce4ti,ms的xbox和ati的radeon8500),这一代处理器提供了顶点编程能力,这些GPU让应用程序指定一系列的指令来处理顶点,而不是由opengl和directx7指定的传统变换和光照模型,但是这些指令并没有强大到被认为是真正的可编程,因为这些GPU虽然支持顶点指令编程,但是却不支持片段(像素)编程,但是就目前来说,已经成功一半了。

        4.第四代图形处理器(nvidia的geforcefx和ati的radeon9700),这些图形处理器同事提供了顶点和片段(像素)的可编程能力,这个级别的可编程能力使得复杂的顶点变换和像素着色操作从CPU转移到GPU成为可能,同时directx9和opengl显示了这些图形处理器的顶点和片段的可编程能力。

        顺便来一张各个时代nvidia GPU的特点和性能,如下图:

        

        制程:半导体芯片中电路与电路之间的距离,制程越小,代表单位面积内电路密度越高,性能越好。

        晶体管数量(百万):半导体元器件数量,越多代表着性能越好。

        反走样率(百万):光栅处理器处理图形生成离散的像素点会导致信息失真,这个叫做走样,用来减少或者消除这种效果的技术,称为反走样,这个速率也就是每秒钟填充32位RGBA像素的数量。

        多边形填充率(百万):也称为三角形生成率,前面我们在辅助工具中讲解了图形其实是由网格点组成的三角形经过拓扑结构组合而成,这个填充率也就是生成三角形的速率,越高越好。

        到这里我们基本上对图形处理器GPU有个大致的了解了,接下来我们就来学习学习图形处理器GPU具体做什么工作,到底GPU是怎么样把一串串数据处理成显示器上的一幅幅画面。

        

        

第1章绪论 1.1计算机图形学及其相关概念 1.2计算机图形学的发展 1.2.1计算机图形学学科的发展 1.2.2图形硬件设备的发展 1.2.3图形软件的发展 1.3计算机图形学的应用 1.3.1计算机辅助设计与制造 1.3.2计算机辅助绘图 1.3.3计算机辅助教学 1.3.4办公自动化和电子出版技术 1.3.5计算机艺术 1.3.6在工业控制及交通方面的应用 1.3.7在医疗卫生方面的应用 1.3.8图形用户界面 1.4计算机图形学研究动态 1.4.1计算机动画 1.4.2地理信息系统 1.4.3人机交互 1.4.4真实感图形显示 1.4.5虚拟现实 1.4.6科学计算可视化 1.4.7并行图形处理 第2章计算机图形系统及图形硬件 2.1计算机图形系统概述 2.1.1计算机图形系统的功能 2.1.2计算机图形系统的结构 2.2图形输入设备 2.2.1键盘 2.2.2鼠标器 2.2.3光笔 2.2.4触摸屏 2.2.5操纵杆 2.2.6跟踪球和空间球 2.2.7数据手套 2.2.8数字化仪 2.2.9图像扫描仪 2.2.10声频输入系统 2.2.11视频输入系统 2.3图形显示设备 2.3.1阴极射线管 2.3.2CRT图形显示器 2.3.3平板显示器 2.3.4三维观察设备 2.4图形显示子系统 2.4.1光栅扫描图形显示子系统的结构 2.4.2绘制流水线 2.4.3相关概念 2.5图形硬拷贝设备 2.5.1打印机 2.5.2绘图仪 2.6OpenGL图形软件包 2.6.1OpenGL的主要功能 2.6.2OpenGL的绘制流程 2.6.3OpenGL的基本语法 2.6.4一个完整的OpenGL程序 第3章用户接口与交互式技术 3.1用户接口设计 3.1.1用户模型 3.1.2显示屏幕的有效利用 3.1.3反馈 3.1.4一致性原则 3.1.5减少记忆量 3.1.6回退和出错处理 3.1.7联机帮助 3.1.8视觉效果设计 3.1.9适应不同的用户 3.2逻辑输入设备与输入处理 3.2.1逻辑输入设备 3.2.2输入模式 3.3交互式绘图技术 3.3.1基本交互式绘图技术 3.3.2三维交互技术 3.4OpenGL中橡皮筋技术的实现 3.4.1基于鼠标的实现 3.4.2基于键盘的实现 3.5OpenGL中拾取操作的实现 3.6OpenGL的菜单功能 第4章图形的表示与数据结构 4.1基本概念 4.1.1基本图形元素 4.1.2几何信息与拓扑信息 4.1.3坐标系 4.1.4实体的定义 4.1.5正则集合运算 4.1.6平面多面体与欧拉公式 4.2三维形体的表示 4.2.1多边形表面模型 4.2.2扫描表示 4.2.3构造实体几何法 4.2.4空间位置枚举表示 4.2.5八叉树 4.2.6BSP树 4.2.7OpenGL中的实体模型函数 4.3非规则对象的表示 4.3.1分形几何 4.3.2形状语法 4.3.3粒子系统 4.3.4基于物理的建模 4.3.5数据场的可视化 4.4层次建模 4.4.1段与层次建模 4.4.2层次模型的实现 4.4.3OpenGL中层次模型的实现 第5章基本图形生成算法 5.1直线的扫描转换 5.1.1数值微分法 5.1.2中点Bresenham算法 5.1.3Bresenham算法 5.2圆的扫描转换 5.2.1八分法画圆 5.2.2中点Bresenham画圆算法 5.3椭圆的扫描转换 5.3.1椭圆的特征 5.3.2椭圆的中点Bresenham算法 5.4多边形的扫描转换与区域填充 5.4.1多边形的扫描转换 5.4.2边缘填充算法 5.4.3区域填充 5.4.4其他相关概念 5.5字符处理 5.5.1点阵字符 5.5.2矢量字符 5.6属性处理 5.6.1线型和线宽 5.6.2字符的属性 5.6.3区域填充的属性 5.7反走样 5.7.1过取样 5.7.2简单的区域取样 5.7.3加权区域取样 5.8在OpenGL中绘制图形 5.8.1点的绘制 5.8.2直线的绘制 5.8.3多边形面的绘制 5.8.4OpenGL中的字符函数 5.8.5OpenGL中的反走样 第6章维变换及维观察 6.1基本概念 6.2基本几何变换 6.2.1平移变换 6.2.2比例变换 6.2.3旋转变换 6.2.4对称变换 6.2.5错切变换 6.2.6维图形几何变换的计算 6.3复合变换 6.3.1维复合平移变换和比例变换 6.3.2维复合旋转变换 6.3.4其他维复合变换 6.3.5相对任一参考点的维几何变换 6.3.6相对于任意方向的维几何变换 6.3.7坐标系之间的变换 6.3.8光栅变换 6.3.9变换的性质 6.4维观察 6.4.1基本概念 6.4.2?用户坐标系到观察坐标系的变换 6.4.3?窗口到视区的变换 6.5?裁剪 6.5.1?点的裁剪 6.5.2直线段的裁剪 6.5.3多边形的裁剪 6.5.4其他裁剪 6.6OpenGL中的维观察变换 第7章三维变换及三维观察 7.1三维变换的基本概念 7.1.1几何变换 7.1.2三维齐次坐标变换矩阵 7.1.3平面几何投影 7.2三维几何变换 7.2.1三维基本几何变换 7.2.2三维复合变换 7.3三维投影变换 7.3.1正投影 7.3.2斜投影 7.4透视投影 7.4.1一点透视 7.4.2点透视 7.4.3三点透视 7.5观察坐标系及观察空间 7.5.1观察坐标系 7.5.2观察空间 7.6三维观察流程 7.6.1用户坐标系到观察坐标系的变换 7.6.2平行投影的规范化投影变换 7.6.3透视投影的规范化投影变换 7.7三维裁剪 7.7.1关于规范化观察空间的裁剪 7.7.2齐次坐标空间的裁剪 7.8OpenGL中的变换 7.8.1矩阵堆栈 7.8.2模型视图变换 7.8.3投影变换 7.8.4实例 第8章曲线与曲面 8.1基本概念 8.1.1曲线/曲面数学描述的发展 8.1.2曲线/曲面的表示要求 8.1.3曲线/曲面的表示 8.1.4插值与逼近 8.1.5连续性条件 8.1.6样条描述 8.2三次样条 8.2.1自然三次样条 8.2.2Hermite插值样条 8.3Bezier曲线/曲面 8.3.1Bezier曲线的定义 8.3.2Bezier曲线的性质 8.3.3Bezier曲线的生成 8.3.4Bezier曲面 8.4B样条曲线/曲面 8.4.1B样条曲线 8.4.2B样条曲线的性质 8.4.3B样条曲面 8.5有理样条曲线/曲面 8.5.1NURBS曲线/曲面的定义 8.5.2有理基函数的性质 8.5.3NURBS曲线/曲面的特点 8.6曲线/曲面的转换和计算 8.6.1样条曲线/曲面的转换 8.6.2样条曲线/曲面的离散生成 8.7OpenGL生成曲线/曲面 8.7.1Bezier曲线/曲面函数 8.7.2GLU中的B样条曲线/曲面函数 第9章消隐 9.1深度缓存器算法 9.2区间扫描线算法 9.3深度排序算法 9.4区域细分算法 9.5光线投射算法 9.6BSP树 9.7多边形区域排序算法 9.8OpenGL中的消隐处理 第10章真实感图形绘制 10.1简单光照模型 10.1.1环境光 10.1.2漫反射光 10.1.3镜面反射光 10.1.4光强衰减 10.1.5颜色 10.2基于简单光照模型的多边形绘制 10.2.1恒定光强的多边形绘制 10.2.2Gouraud明暗处理 10.2.3Phong明暗处理 10.3透明处理 10.4产生阴影 10.5模拟景物表面细节 10.5.1用多边形模拟表面细节 10.5.2纹理的定义和映射 10.5.3凹凸映射 10.6整体光照模型与光线追踪 10.6.1整体光照模型 10.6.2Whitted光照模型 10.6.3光线跟踪算法 10.6.4光线跟踪反走样 10.7 OpenGL中的光照与表面绘制函数 10.7.1 OpenGL点光源 10.7.2 OpenGL全局光照 10.7.3 OpenGL表面材质 10.7.4 OpenGL透明处理 10.7.5 OpenGL表面绘制 10.7.6 实例 10.8 OpenGL中的纹理映射
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值