计算机如何从代表字母“g”的二进制代码转换为正确的像素照明组合?
到目前为止,我已经弄清楚了:我了解CPU如何获取键盘生成的输入并将其存储在RAM中,然后检索它以使用指令集进行操作。我也了解它是如何详细执行这些操作的。然后,CPU 传输操作的输出,在本例中是一个指令集,该指令集从内存地址检索“g”并将其发送到监视器输出。
现在我的问题是CPU是否直接将字母“g”转换为位图,还是使用内置或独立的GPU,还是显示器本身处理转换?
另外,是否可以编写自己的代码来解释二进制文件并将其格式化以供显示?
在大多数系统中,CPU 不直接与显示器通信;它向显卡发送命令,显卡进而生成电信号,显示器将其转换为屏幕上的图片。这个过程有很多步骤,处理模型取决于系统。
从软件角度来看,与显卡的通信是通过显卡驱动程序进行的,该驱动程序将程序和操作系统的请求转换为卡上的硬件可以理解的内容。
有不同类型的驱动程序;最简单的解释是文本模式驱动程序。在文本模式下,屏幕由许多单元组成,每个单元都可以恰好容纳一个预定义字符。该驱动程序包括预定义的位图字体,该字体通过指定哪些像素打开、哪些像素关闭来描述字符的外观。当程序请求在屏幕上打印字符时,驱动程序会在字体中查找该字符,并告诉卡更改发送到监视器的电信号,以便屏幕上的像素反映字体中的内容。
文本模式的用途有限。您只能选择一种字体、有限的颜色选择,并且无法绘制线条或圆形等图形:您只能使用字符。为了获得高质量的图形输出,使用不同的驱动程序。显卡通常包含一个内存缓冲区,其中以明确定义的格式包含屏幕内容,例如“每像素 n 位,每行 m 像素,...”要在屏幕上绘制某些内容,您只需写入此内存缓冲。为了做到这一点,驱动程序将缓冲区映射到计算机内存中,以便操作系统和程序可以使用缓冲区,就像它是 RAM 的一部分一样。然后,程序可以直接放置他们想要显示的像素,并将字母“g”放在屏幕上,这取决于应用程序程序员以类似于该字母的方式输出像素。当然有很多库可以帮助程序员做到这一点,否则图形用户界面的当前状态会比现在更糟糕。
当然,这是对计算机中实际情况的简化,有些系统并不完全像这样工作,例如某些CPU确实有集成显卡,而某些输出设备不是基于绘图的像素但绘制线条,但我希望这能稍微消除一些混乱。
参见此处 http://en.m.wikipedia.org/wiki/Code_page_437 它描述了用于在 VGA 显示器上以字符模式显示字符的基于字符的机制。