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