计算机速成课Crash Course - 23. 屏幕& 2D 图形显示
今天继续计算机速成课Crash Course的系列讲解。
最新技术资讯,“极客之昂 ”首次发布公众号订阅即时更新 - 上午11点 - ,期待您的关注与分享!
23. 屏幕 & 2D 图形显示
在1960年制造的一台PDP-1是历史上最早的图形电子计算机之一你可以注意到左边是一台占据柜子大小空间的电子设备正中位置一台电传打字机而右边则是一个圆形屏幕这些设备都是分离设置

因为当时文本任务和图形任务是分开的。
实际上,过去的一些屏幕设备无法很好地呈现清晰可辨的文字内容,但通过打印在纸上,能够体现出更高的对比度和分辨率
早期屏幕的典型用途,是跟踪程序的运行情况,比如寄存器的值。

如果仅使用打印机,则会重复打印不仅无益还会造成浪费, 不但费纸而且效率低下, 相反地, 屏幕更新得非常快, 对临时值来说非常高效。
屏幕不常用于输出计算的结果;一般而言这些数值都会被记录到纸张或者其他更为持久的形式中
但屏幕非常实用,在20世纪早期利用屏幕创造了许多令人惊叹的技术。经过几十年的发展与创新,在这一过程中出现了许多新型显示技术。
但最早最有影响力的则是阴极辐射管(CRT),其工作原理是将电子发送到带有磷化涂层的屏幕表面,在该层表面接触后会短暂发光。因为电子作为带电粒子具有这种特性,在施加磁场时其运动轨迹可通过磁场进行调节,在内部使用固定板或绕组线圈来引导这些粒子在水平和垂直方向上均可调节位置以达到所需位置。

由于可以选择不同的绘图方式,在此介绍其中一种主要的方法:引导电子束描绘出形状称为'矢量扫描'。这种方法的优势在于仅需较短发光照 duration即可完成绘图;只要重复频率足够高,则可生成清晰的画面。
由于可以选择不同的绘图方式,在此介绍其中一种主要的方法:引导电子束描绘出形状称为"矢量扫描"。这种方法的优势在于仅需较短发光照 duration即可完成绘图;只要重复频率足够高,则可生成清晰的画面。
2. 按照固定的轨迹一行行走,在自上而下、由左至右的方向循环往复地进行操作,在特定位置发射电子束以描绘出图形轮廓的形式被定义为"光栅扫描"方法。通过这种方式能够利用大量细小线段构建形状并不仅适用于绘制几何形状和字母符号。

最后,因为显示技术的发展,我们终于可以在屏幕上显示清晰的点,叫"像素"。
液态晶体显示器的代号为 LCD,并与传统技术在本质上有所不同;然而 LCD 同样采用了光栅扫描技术,并且能够每秒更新多个像素中包含红绿蓝三种颜色的信息。

值得注意的是许多早期计算机系统未采用像素技术并非技术上无法实现而是由于占用过多内存资源
尺寸为201×217毫米的彩色照片中包含大约 367.6万像素数据
因此,在内存达到足以处理的程度之前,请考虑一些技巧以生成图像;而早期的计算机通常不会存储大量像素值——它们会存储符号形式。常用80×25的符号组合——总计约2,000个字符。

如果每个字符用 8 位表示,比如用 ASCII,总共才 16000 位,这种大小更合理。
为了实现屏幕显示的效果需求,在处理过程中需要配置专门的硬件组件来进行字符数据的获取与转换工作。这一步骤确保了正确显示在屏幕上。这种设备通常被称为"字符生成器"并被归类为第一代显卡的基础设计部分。其内部包含一块仅用于存储特定数据的专用芯片——ROM 存储了每个字符对应的图形模式称为"点阵图案"或者说是‘格栅图像’。
当图形卡识别到一个八位二进制数值时(即...),检测到对应的字符K。从而会将字符K的点阵图像按照正确的位置进行光栅扫描显示到底层屏幕。
该系统中的字符生成器旨在访问内存中的特定区域。这一专用存储空间被命名为屏幕缓冲区。当程序试图在屏幕上显示文字时,则只需修改该缓冲区内的相应数据即可。与之前的方法相比所需内存大幅减少。但这种优化也带来了明显的局限性:它仅能以单个像素级别的精度绘制线条或字体等元素。
即使有这样限制,人们用 ASCII 艺术发挥了很多创意!

也有人复制图形界面并使用下划线及加号绘制基本形状。
然而这些符号的数量有限。
于是决定增添新的符号以提升功能。

如上所示,在 IBM CP437 字符集中被采用于DOS操作系统的字符集定义下,在一些计算机系统中(如Windows等),这些系统通常会利用额外的二进制位来指定字体颜色和背景颜色;该界面仅依赖于上述提到的字符集进行显示设置

字符生成器是一种节省内存资源的技术程序,并且不具备绘制任意形状的能力;然而它具备这一能力是非常重要的;因为它被用于多种场景如电路设计、建筑设计平面图以及地图等都是非文字形式的信息存储与表示方式;
通过在任意形状上绘图,并且不浪费全部内存,在 CRT 显示器中使用矢量图形技术。其基本原理极为简单:一切物体均由线条构成,并无需文字元素。要呈现文字内容,则通过线条绘制实现,并且仅由线条构成。
明白了吗?好,我们举个实例吧。
假设这个视频是一个 笛卡尔平面,200个单位宽,100个单位高,原点 (0,0) 在左上角。
我们能够绘制形状,通过以下矢量指令:这些指令源自 Vectrex 早期的矢量显示系统。
首先使用reset命令清除屏幕内容,并将电子枪的绘图位置移动至坐标原点(0,0),同时将线的亮度设置为零。
MOVE_TO 50 50,把绘图点移动到坐标 (50,50),INTENSITY 100 把强度设为 100。

现在亮度提高了,移动到 (100,50),然后 (60,75) 然后 (50,50),最后把强度设回 0。
酷,我们画了一个三角形!

这些命令占用160位二进制空间(160-bit),相较于存储一个庞大的像素矩阵而言更为高效(efficiency)。它们类似于我们之前所使用的字符生成器,在内存中将字符转换为图形(graphical representation)。
这些矢量指令也保留在内存里,在使用矢量图形卡进行绘图时会将数百个命令依次绘制在屏幕上时会保留在屏幕缓冲区。绘制复杂的图形仅由线条构成!
由于这些矢量都在内存中,程序可以更新这些值,让图形随时间变化 - 动画!
Spacewar!作为最早的经典电子游戏之一,在1962年采用矢量图形技术于PDP-1平台上开发,并为后来的游戏提供了重要的灵感来源。它不仅启发了如《爆破彗星》(Asteroids)等经典作品,并且开创了街机游戏的新纪元,并以《太空大战》(Spacewar!)为标志。

1962年是一个重要时刻,Sketchpad 出现,并作为第一个具有图形用户界面的软件被广泛应用于计算机辅助设计 (CAD)领域。它被视为第一个完整实现的图形程序,并由其开发者 伊万·萨瑟兰 获得图灵奖。

通过使用当时尚未广泛普及的触控技术——光笔(一种连接到电脑的触控设备),Sketchpad实现了与图形界面的有效交互。光笔配备了光线传感器,在显示器每次刷新时都会被检测到这一动作,并通过计算出精确的刷新时间间隔来确定光笔当前位置。
配备了带有多种功能键的绘图工具后,人们能够绘制直线以及诸如圆形、矩形等基本几何图形。软件能够确保线条严格平行且长度相等,并且完全垂直于彼此且成直角。此外,软件还支持同时将多个线条进行实时缩放操作;这些在纸上完成往往非常费时费力,而使用计算机软件则异常便捷!
用户还可以将设计结果进行存储,并以便以后能够方便地再次使用它。此外,你也可以建立一个完整的库,在其中包含各种类型的电子元件和家具。这些都可以直接拖入并使用它们。

从当今的角度看却显得平淡无奇的是,在1962年时计算机还是一台依赖纸带的巨大庞物。占据着与衣柜相当的空间的是一台占据着与衣柜相当的空间的电脑 Sketchpad 和光笔让人们耳目一新这些工具标志着人机交互方式的重要转折点电脑已不再是被禁锢于房室之中的计算工具而是能够辅助人类完成工作的一股重要力量

最开始采用真正像素的计算机与显示器,在1960年代末期就已经开始应用。在内存中表示每个像素的数据单元被称为位(Bit),这种表示方法通常被称作位图显示技术
如今我们能够随意绘制各种图形。你可以将图形视为一个由海量像素值构成的巨大矩阵。类似地,在内存中有一个专门区域用于临时存储这些像素数据,并将其命名为"帧缓冲区"。
早期阶段,在存储系统中使用内存来存储数据;随后,在高速视频系统中引入了高速视频存储器来存储数据,并将其称为VRAM。VRAM位于显卡上以提高访问速度;如今仍沿用这一方法。
在8位灰度显示器运行时,在从0亮度(黑色)到255亮度(白色)之间构成了可使用的色彩范围。实际上这些颜色更接近绿色或橙色而非严格的白色;因为许多早期显示器不具备独立显示白色的能力。
假设该视频以分辨率60x35像素显示于位图界面。若要将指定像素设置为白色,则可通过以下代码实现。

如果想画一条线 假设从(30,0)到(30,35),可以用这样一个循环,把整列像素变成白色。

要绘制较为复杂的图形(如矩形),必须具备四个参数:1. 起始位置的X轴坐标;2. 起始位置的Y轴坐标;3. 宽度;4. 高度。
目前只试了白色,这次画矩形试下灰色,灰色介于0到255中间,所以我们用 127 (255/2=127.5)。
使用两个循环结构进行嵌套操作时,在外层每次运行时内层将执行多次操作从而形成一个矩形区域

计算机绘图时会用指定的颜色 127,我们来包装成 "画矩形函数",就像这样:
如果要在屏幕另一侧绘制第二个矩形,则其中一次可能绘制的是一个黑色矩形;可以通过直接调用绘图函数来实现这一功能。真是个好主意!
如前所述的其他方案中提到的那样,在本系统中程序能够控制帧缓冲区内的像素数据块,并以此生成动态交互界面。
显然地讲,在开发过程中

一层新抽象!
图形学中的位图表示法以其灵活性著称,在开创交互式图形界面方面发挥了重要作用。然而其高昂的成本这一情况持续了将近二十年。上一集里提到,在1971年为止,在全美范围内仅有约7万台电传打字机和同样数量的终端设备存在。然而令人感到意外的是,在当时仅有约一千台配备有交互式图形界面的个人电脑。
这可不多!
具有里程碑意义的软件如Sketchpad和Spacewar!在图形界面的发展历程中扮演了重要角色,并促进了计算机显示器的广泛应用
由此,图形界面的曙光初现,接下来讲图形界面。下节课见。
以上所述的内容主要是 23. 屏幕& 2D 图形显示 的相关内容,请各位感兴趣的朋友们别忘了点赞关注转发收藏哦!
我会不定期发布课程的讲解!
richer technical content is now officially launched on the 极客之昂 platform, with articles appearing for the first time at -每日定时发布上午11点 -, and we sincerely welcome your attention, shares, and likes!
