当前位置:首页|资讯

[Computer Graphics] 0 - 显卡发展史 : 显示模式与 T&L (Display Mode and T&L)

作者:78058541799_bili发布时间:2024-09-21

编者 : Tanvone (bilibili up @78058541799_bili) 

声明 : 本文为博主原创文章,遵循 CC 4.0 BY-SA (知识共享 署名-相同方式共享 4.0 国际公共许可) 版权协议,转载请附上原文出处链接和本声明。

注释 : 本篇文章为 Tanvone 所编计算机图形学科普文集第 1 篇。

目录 : (为非标记语言渲染界面提供)

显示模式与 T&L (Display Mode and T&L)

  1. GUI

  2. 文本模式

  3. 图形模式

  4. GDI

  5. 3D 模式

  6. T&L 硬件

  7. Geforce 256

  8. 参考文献

GUI

以像素为单位采用图形方式显示的计算机操作用户界面被称为图形用户界面(GUI, Graphical User Interface 。

1970年,斯坦福研究院 (SRI Stenford Research Institute) 的部分研究员进入美国施乐公司 (Xerox) 帕洛阿尔托研究中心(PARC, Palo Alto Research Center),并完成了第一个WIMP(窗户,图标,菜单和指针/下拉式菜单)的演示。

1973年,第一台使用 Alto 操作系统的计算机在施乐公司 PARC 研究中心开发完成。Alto 是第一个具备了所有现代图形用户界面的基本元素特征的操作系统, 其特点有:使用三键的鼠标;位图的显示器;图形窗口的运用。

但此时负责图形界面绘制的 CPU 在一个单位周期内仅能处理一个像素。随着界面设计越来越复杂且屏幕分辨率越来越高, CPU 逐渐难以支持图形界面的绘制工作, 于是才有公司开始设计专门的图形加速设备 (显示适配器) 。

文本模式

文本模式是早期显示适配器的一种基本显示模式, 它依据字符大小将屏幕划分出行列, 并在指定行列位置的单元格中显示字体。通过这种形式显示出的用户界面被称为字符界面。

国际商业机器公司 (IBM, International Business Machines Corporation) 在 1981 年用于 IBM-PC 上的显示适配器被称为单色显示适配器 (MDA, Monochrome Display Adapter) 。

此时大部分计算机系统仅仅为人机交互提供了一个终端 (terminal) , 核心是控制台 (console) 的命令输入和文本输出。于是, MDA 使用文本模式以实现计算机系统终端中文本的显示效果。

此时在显卡中存在一段物理存储空间, 其大小 = 字符界面中所有单元格的数量 × 一个字符所占用的空间 ( 1 字节) 。它的作用是存储用于输出至字符界面的字符, 这段存储空间也就是显存 (Video Memory) 。

通过内存映射, CPU 便可以像访问内存一样访问显存。显存中的每个字节都对应字符界面中的一个单元格, 因此计算机每读取一个字节就可以向屏幕输出一个字符。在这个过程中, 将字节信息转换为字符需要依照码表 (Code Page) 。不同的码表可以将同样的字节信息转换为不同的字符, 例如英文字符与俄语字符。

(在 Windows Terminal / cmd 中, 输入 chcp 指令可以查看活动代码页 (Active Code Page) , 而所谓的活动代码页就是当前  cmd 使用的码表。936 表示 GBK 编码 , 65001 表示 UTF-8 编码。)

图形模式

在 MDA 出现的同年 (1981) , IBM 又于年上市了第一个彩色图形适配器 (CGA, Color Graphics Adapter) 。

除了支持文本模式, CGA 将显存以新的起始地址映射到内存, 每 4 个比特对应一个像素 (意味着每个像素都可以显示 16 种颜色)。(色彩值通常存储成 1-bit (黑白) / 4-bit 调色板 / 8-bit 调色板 / 16-bit 高色彩 / 24-bit 真色彩格式。)

此时的显存被称为帧缓存 (Framebuffer) 。它实际上就是一个二维数组, 经过数据填充后就可以依照色彩格式进行显示, 这种新的显示模式就是图形模式。后期又发展出了页交换 (Page flipping) 技术, 即用两个独立的帧缓存空间轮流进行显示和填充, 可以解决屏幕撕裂 (tearing, 旧 / 新帧各在屏幕上显示一半) 的问题。

GDI

1985 年, 微软 (Microsoft) 发布了其第一款基于 GUI 的操作系统——Windows1.x 。

图形设备接口 (GDI, Graphics Device Interface) 是 Microsoft 开发的用于 Windows 系统的图形编程接口, 它的主要任务是负责系统与绘图程序之间的信息交换,处理所有 Windows 程序的图形输出。

在 Windows 系统下,绝大多数具备图形界面的应用程序都离不开图形设备接口。它不仅提供了图形绘制相关的函数, 更关键的是还提供了窗口这一显示图像的容器。

3D 模式

随着计算机图形学的发展, 2D 图形渐渐不能满足人的需求了。一些游戏公司逐渐发现了一套用于处理 3D 图形的理论——T&L (Transform and Lignting) , 而一些 3D 图形应用编程接口也渐渐出现了。

Transform (变换) :

  1. 使用三维坐标和额外的参数表达几何体顶点的位置和颜色。

  2. 基于相机的位置和朝向建立新的空间参考系。

Lighting (光照) :

  1. 布置光源的位置、颜色、强度和类型 (点光源 / 平行光源)。

  2. 根据几何体表面的材质 (反射率、折射率) 计算其对光源的反应。

  3. 将计算出的光照效果与顶点的原始颜色进行合成, 得到最终的顶点颜色。

Projection (投影) :

  • 将几何体顶点相对于相机的位置转换为 2D 坐标 (存在正交投影 / 透视投影两种方式) 。

Clipping (裁剪) :

  • 根据遮挡关系,忽略模型中被遮挡的部分。

Screen Mapping (屏幕映射) :

  • 将三维坐标转化为用于显示在窗口中的二维坐标。

Rasterizing (栅格化) :

  • 将线段与由线段连成的三角形像素化 , 得到离散的片元 (fragment) 。

Interpolation (插值) :

  • 对片元进行颜色填充或使用纹理贴图 (texture)。

T&L 处理图形的各个步骤就像工厂流水线中的各道工序一样。在图形渲染过程中, 这种功能固定的标准化流程被称作固定渲染管线 (Fixed Rendering Pipeline)  。(T&L 是固定渲染管线中的核心组成部分)

1992 年, 美国硅图公司 (SGI,Silicon Graphics) 公司领导了 OpenGL (开放图形库) 架构审查委员会(OpenGL ARB)的创建, 随后该协会于同年发布引入了固定渲染管线 API 的初版 GpenGL 。

1999 年, 微软发布的 DirectX 7 (多媒体编程接口) 实现了对 T&L 的支持。此时的 OpenGL 也还未在民用级硬件中出现。

T&L 硬件

在专门用于处理 3D 图形的显卡出现前, 日本任天堂 (Nintendo, 电子游戏软硬件开发公司) 在 1996 年发布的游戏机上已经装有支持 T&L 的硬件——美国硅图公司 (SGI, Silicon Graphics, 计算机系统生产公司) 为任天堂 Nintendo 64 游戏机研发的现实协处理器 (Reality Coprocessor) 。

Reality Coprocessor 包含两部分, 即 RSP (Reality Signal Processor) 和 RDP (Reality Display Processor) 。

RSP 就是一颗 CPU ,主要负责 Transform 和 Lighting 。它可以读取一个指令序列 (display list) , 解析并执行该指令序列中被称为微码 (micro code) 的指令。微码可能是一些打包二进制比特流的宏, 但有点像 C 函数调用。

总而言之, RCP 的输入是一些顶点、纹理坐标、光照条件等,而输出是多边形。 而 RDP 的作用是把这些多边形进行栅格化, 再处理由栅格化得到的片元。

Reality Coprocessor 已经很像一个真正的图形处理器了, 它的微码与 OpenGL API 也存在相似性。

GeForce 256

a single-chip processor with integrated transform, lighting, triangle setup/clipping, and rendering engines that is capable of processing a minimum of 10 million polygons per second.

1999 年, 英伟达 (NVIDIA, 美国芯片制造公司) 发布了第一个图形处理器 (GPU, Graphics Processing Unit) GeForce 256 。它具有现代 GPU 的特点 : 多核设计, 与 CPU 相互独立的 T&L 硬件 ,  支持一款 3D API 。

GeForce 256 同时支持 OpenGL 1.2 & DirectX 7 , 此时的 OpenGL & DirectX 都使用固定渲染管线。

参考文献 :

GUI——百度百科 (baidu.com)

GDI——百度百科 (baidu.com)

显卡的发展历史回顾 (之一)——知乎 @Sinaean Dean 的文章 (zhihu.com)

现代显卡 (之一 )——知乎 @Sinaean Dean 的文章 (zhihu.com)

glad 和 glew 是什么?——知乎 @我说我谁呢 的回答 (zhihu.com)

OpenGL基础 (渲染管线)——简书 矮里寺西瓜麻辣烫 的文章 (jianshu.com)

猴子也能看懂的渲染管线——知乎 @HkingAuditore (zhihu.com)

可编程渲染管线比固定管线的优势在哪?——知乎 @王天祺 的回答 (zhihu.com)


链接列表 : (为非标记语言渲染界面提供)

https://baike.baidu.com/item/GUI/479966?fr=ge_ala

https://baike.baidu.com/item/图形设备接口?fromModule=lemma_search-box

https://zhuanlan.zhihu.com/p/35760165

https://zhuanlan.zhihu.com/p/36660114

https://www.zhihu.com/question/344133077/answer/2735715316

https://www.jianshu.com/p/a5c7e5585275

https://zhuanlan.zhihu.com/p/137780634

https://www.zhihu.com/question/28024422/answer/39097192



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1