计算机如何在最低级别向屏幕绘制任何内容(没有关于外部库,如X11)?是否应该有汇编命令来执行此操作? CPU如何控制屏幕上显示的内容?
答案 0 :(得分:9)
基本上与从硬盘驱动器读取或播放声音效果的方式相同。
通过将某些数据写入由存储器控制器映射到所讨论的外部硬件的特定存储器地址(在这些情况下为硬盘驱动器,GPU或声卡)。当硬件接收到这些写入时,它会将写入的数据解释为关于该做什么的指令。
CPU实际上与系统的其他部分隔离开来。所有它真正知道的是内存总线。它可以在该总线上读写数据,基本上就是这样。其中一些读/写会进入内存,其他可以映射到各种硬件的控制寄存器,或者映射到设备的内存(如果存在),允许CPU与其他设备通信。
现代GPU有自己的专用RAM,可以将数据加载到其中。因此,CPU向GPU发送指令,指定它在主存储器中的哪个位置可以找到用于生成屏幕内容的数据以及如何处理它。然后,GPU将数据从主存储器加载到自己的RAM中,然后执行必要的转换和计算,然后将其写入其缓冲区,montitor不断读取它。
答案 1 :(得分:5)
通常,视频卡中会有一个名为frame buffer的内存区域。写入值意味着建立像素的颜色值。
您可以将帧缓冲区视为2D阵列,其中每个位代表屏幕上的一个像素。表示颜色使用不同级别的缓冲区。今天,一个常见的帧缓冲区有24级(每个RGB颜色分量为8级),并允许对2 ^ 24种可能的颜色进行防御。
现在一般来说,通过GPU可以访问帧缓冲区,以解决性能问题:即使CPU可以执行此任务,也非常昂贵。
答案 2 :(得分:3)
有一个专门用于视频屏幕的内存。屏幕上的每个像素都有一定的内存。避免使用调色板和黑白等历史解决方案,通常会有一定数量的红色位,一些位用于蓝色,一些位用于绿色。当添加这些颜色时,您可以获得包括白色在内的所有颜色(例如,我知道它们不是用于涂料的主要颜色,不要担心它有效)。通常你会发现24位颜色,因为它很容易管理8位,一个字节,红色,一个绿色字节和一个蓝色字节,以及连接内存等。
视频硬件不断读取此内存并使用任何技术向显示器发送信号,从而基本上告诉它为特定像素点亮的红色,绿色和蓝色的数量,不断扫描屏幕并保持最新信息。
使用此内存的一些常用技术是使用称为双端口的东西,其中两个实体能够读/写内存。或者有两个记忆并交换它们。在任何一种情况下,都有另一个实体,一个处理器,CPU本身,或者现在视频卡/芯片中的许多小图形处理器。在任何一种情况下,一些软件运行并且这些计算所有像素的位置和颜色并将它们写入视频存储器,这取决于所使用的机制,存储器的视频/监视器侧在有意义时进行改变。你不希望只有你输入的字母的一些像素出现在屏幕上的一次通过,然后在下一次通过时显示其余部分,可能会得到用户注意到的闪烁。
视频内存通常映射为系统内存,处理器可能会使用相同的指令来访问非视频,系统和内存。当然gpus可能,但是cpu通常没有外围特定指令,uart,gpio,video,usb,storage等。外设通常映射为cpu内存空间中的某些地址,并使用正常的内存读/写指令。
由于特殊类型的算法,更重要的是视频游戏所需的大量计算,视频卡使用许多很多专业的简单图形处理器,这些可能在昨天,今天或明天都有视频针对性能,大小或功率或其他原因的内存特定说明。可能不会改变的是具有帧缓冲存储器的模型,帧缓冲存储器是一个存储像素屏幕的存储器,视频硬件使用该存储器来创建发送到监视器的信号,以便它可以绘制屏幕。