第一章 绪论

1.1 Programmable Graphics Processing Unit 发展历程

Programmable Graphics Processing Unit( GPU),即可编程图形处理单元,

通常也称之为可编程图形硬件。

GPU的发展历史

GPU 概念在 20 世纪 70 年代末和 80 年代初被提出,使用单片集成电路( monolithic)作为图形芯片,此时的 GPU 已经被用于视频游戏和动画方面,它能够很快地进行几张图片的合成(仅限于此)。

  • 在20 世纪 80 年代末到 90 年代 ,基于数字信号处理芯片(digital signal processor chip)的 GPU 被 研发出来,与前代相比速度更快、功能更强,当然价格非常昂贵。
  • 1991 年,S3 Graphics 公司研制出第一个单芯片 2D 加速器。
  • 1995 年,主流的 PC 图形芯片厂商都在自己的芯片上增加了对 2D 加速器的支持。
  • 1998 年 NVIDIA 公司宣布 modern GPU 的研发成功,标志着 GPU 研发的历 史性突破成为现实。

GPU发展的两个时期

通常将 20 世纪 70 年代末到 1998 年的这一段时间称之为pre-GPU 时期,而自 1998 年往后的 GPU 称之为 modern GPU。

  • 在 pre-GPU 时期, 一些图形厂商,如 SGI、Evans & Sutherland,都研发了各自的 GPU,这些 GPU 在现在并没有被淘汰,依然在持续改进和被广泛的使用,当然价格也是非常的高 昂。
  • 而modern GPU 使用晶体管(transistors)进行计算,在微芯片(microchip)中, GPU 所使用的晶体管已经远远超过 CPU。

Modern GPU时期的四个阶段

回顾 Modern GPU 的发展历史,自 1998 年后可以分为 4 个阶段。

  1. NVIDIA 于 1998 年宣布 Modern GPU 研发成功,这标志着第一代 Modern GPU 的诞生, 第一代 Modern GPU 包括 NVIDIA TNT2,ATI 的 Rage 和 3Dfx 的 Voodoo3。这 些 GPU 可以独立于 CPU 进行像素缓存区的更新,并可以光栅化三角面片以及进 行纹理操作,但是缺乏三维顶点的空间坐标变换能力,这意味着“必须依赖于 GPU 执行顶点坐标变换的计算”。这一时期的 GPU 功能非常有限,只能用于纹理组合 的数学计算或者像素颜色值的计算。
  2. 从 1999 到 2000 年,是第二代 modern GPU 的发展时期。这一时期的 GPU 可以进行三维坐标转换和光照计算(3D Object Transformation and Lighting, T&L),并且 OpenGL 和 DirectX7 都提供了开发接口,支持应用程序使用基于 硬件的坐标变换。这是一个非常重要的时期,在此之前只有高级工作站(workstation)的图形硬件才支持快速的顶点变换。同时,这一阶段的 GPU 对 于纹理的操作也扩展到了立方体纹理(cube map)。NVIDIA 的 GeForce256, GeForce MAX,ATI 的 Radeon 7500 等都是在这一阶段研发的。
  3. 2001 年是第三代 modern GPU 的发展时期,这一时期研发的 GPU 提供 vertex programmability(顶点编程能力),如 GeForce 3,GeForce 4Ti,ATI 的 8500 等。 这些 GPU 允许应用程序指定一个序列的指令进行顶点操作控制(GPU 编程的本 质!),这同样是一个具有开创意义的时期,这一时期确立的 GPU 编程思想一 直延续到 2009 年的今天,不但深入到工程领域帮助改善人类日常生活(医疗、 地质勘探、游戏、电影等),而且开创或延伸了计算机科学的诸多研究领域 (体 绘制、光照模拟、人群动画、通用计算等)。同时,Direct8 和 OpenGL 都本着 与时俱进的精神,提供了支持 vertex programmability 的扩展。不过,这一时期的 GPU 还不支持像素级的编程能力,即 fragment programmability(片段编程能力), 在第四代 modern GPU 时期,我们将迎来同时支持 vertex programmability 和 fragment programmability 的 GPU。
  4. 第四代 modern GPU 的发展时期从 2002 年末到 2003 年。NVIDIA 的 GeForce FX 和 ATI Radeon 9700 同时在市场的舞台上闪亮登场,这两种 GPU 都支持 verte x programmability 和 fragment programmability。同时 DirectX 和 OpenGL也扩展了自身的 API,用以支持 vertex programmability 和 fragment programmability。自 2003 年起,可编程图形硬件正式诞生,并且由于 DirectX 和 OpenGL 锲而不舍的追赶潮流,致使 基于图形硬件的编程技术简称 GPU 编程,也宣告诞生。

图1

点击关注,共同学习!
[安全狗的自我修养](https://mp.weixin.qq.com/s/E6Kp0fd7_I3VY5dOGtlD4w)

[github haidragon](https://github.com/haidragon)

https://github.com/haidragon

学习笔记-《GPU 编程与CG 语言之阳春白雪下里巴人》相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. HR最常用的Excel技巧,职场必备,值得收藏转发!
  2. Nacos配置中心-加载多配置集
  3. SAP CRM 查询单据的时候 BAdI 里面的排序字段为何有些不生效
  4. kdj指标主要看哪个值_悟空CRM:在线crm主要看这两个指标,都非常重要!
  5. opencv-api erode
  6. 靠谱测试人员需具备逻辑思考能力
  7. 466.统计重复个数
  8. (六)、Redis的AOF持久化---Redis设计与实现读书笔记
  9. [数字图像处理·冈萨雷斯 ] 图像文件格式
  10. Python处理txt文件
  11. 三维扫描仪[8]——如何设计一台云台式扫描仪(机械结构)
  12. 影视后期行业概述、制作流程、岗位划分、薪资待遇、课程介绍详解
  13. Matlab R2017b 自动驾驶工具箱学习笔记(2)_Tutorials_Visual Perception Using Monocular Camera
  14. 个人主页博客网页设计制作HTML5+CSS大作业——个人相册展示留言博客模板(6页) 简单个人网页制作
  15. 数字化时代,全方位解读商业智能BI
  16. 修炼内功的融云,以通讯中台赋能企业数字化升级
  17. 有宠商城Android端
  18. UEditor 不调用后台
  19. 一招教你如何大批量解密pdf
  20. Windows下 YOLOv5配置、部署、及遇到的问题

热门文章

  1. 苹果发布第二代平板电脑 iPad 2
  2. 最新AndroidStudio项目实战开发安卓播放器(手机影音)
  3. 鸿蒙系统王者荣耀能转区吗,王者荣耀跨系统转区开放!详细问答汇总,解决全部转区疑惑!...
  4. 计算机修复画笔结果分析,《photoshop修复图像瑕疵》教学反思
  5. springboot大学生拼车管理系统 毕业设计-附源码201507
  6. VS2015 配置 Qt 开发编译环境
  7. 2.3ORBSLAM3之相机模型与畸变模型
  8. 【集合论】集合恒等式 ( 幂等律 | 交换律 | 结合律 | 分配率 | 德摩根律 | 吸收率 | 零律 | 同一律 | 排中律 | 矛盾律 | 余补律 | 双重否定定律 | 补交转换律 )
  9. CSS元素的定位(相对定位、绝对定位、固定定位、粘滞定位)
  10. Modelsim 仿真 IP 核