计算机如何绘制屏幕?

问题描述 投票:0回答:3

计算机如何在最低级别将任何内容绘制到屏幕上(没有像 X11 这样的外部库)?是否应该有汇编命令来执行此操作? CPU 究竟如何控制屏幕上显示的内容?

assembly screen cpu low-level graphic
3个回答
9
投票

基本上与从硬盘读取数据或播放声音效果相同。

通过将某些数据写入特定的内存地址,这些地址由内存控制器映射到相关的外部硬件(在这些情况下为硬盘、GPU 或声卡)。当硬件接收到这些写入时,它将写入的数据解释为有关执行操作的指令。

CPU 确实与系统的其他部分隔离。它真正了解的只是内存总线。它可以在该总线上读取和写入数据,基本上就是这样。其中一些读/写会进入内存,而其他的则可以映射到各种硬件的控制寄存器,或者映射到设备的内存(如果存在),从而允许 CPU 与其他设备进行通信。

现代 GPU 有自己的专用 RAM,可以将数据加载到其中。因此,CPU 向 GPU 发送指令,指定在主内存中的何处可以找到用于生成屏幕内容的数据以及如何处理这些数据。然后,GPU 将该数据从主内存加载到自己的 RAM 中,在其中执行必要的转换和计算,然后将其写入帧缓冲区,监视器不断从中读取数据。


6
投票

通常,视频卡中有一个称为“帧缓冲区”的内存区域。在那里写入一个值意味着建立一个像素的颜色值。 您可以将帧缓冲区视为 2D 数组,其中每个位代表屏幕上的一个像素。使用不同级别的缓冲区来表示颜色。如今,常见的帧缓冲区有 24 个级别(每个 RGB 颜色分量有 8 个级别),并允许定义 2^24 种可能的颜色。

现在,出于性能原因,通常通过 GPU 来访问帧缓冲区:即使 CPU 可以执行此任务,但其成本也相当昂贵。


3
投票

视频硬件不断读取该内存,并使用任何技术向显示器发送信号,本质上告诉显示器特定像素点亮的红色、绿色和蓝色的数量,不断扫描屏幕以获取最新信息。

使用此内存的一些常见技术是使用称为双端口的技术,其中两个实体能够读取/写入内存。 或者拥有两个记忆并交换它们。 无论哪种情况,都有另一个实体,即处理器,要么是 CPU 本身,要么是现在视频卡/芯片中的许多小型图形处理器。 在任何一种情况下,都会运行一些软件,这些软件会计算所有像素的位置和颜色,并将它们写入视频内存,具体取决于所使用的机制,内存的视频/显示器端会在有意义时进行更改。您不希望仅将所输入字母的部分像素显示在屏幕上的一次传递中,然后将其余部分显示在下一次传递中,这可能会引起用户注意到的闪烁。

视频内存通常像系统内存一样映射,处理器可能会使用与访问非视频、系统、内存相同的指令。 GPU当然可以,但是CPU通常没有外设特定指令,uart、gpio、视频、USB、存储等。外设通常映射为cpu内存空间中的某些地址,并使用普通内存读/写指令。

由于特殊类型的算法,更重要的是视频游戏所需的计算量巨大,视频卡使用许多、许多、专用、简单的图形处理器,这些处理器可能在昨天、今天或明天具有特定的视频内存有关性能、尺寸、功率或其他原因的说明。 可能不会改变的是帧缓冲内存的模型,该内存保存了屏幕上的像素,视频硬件使用这些像素来创建发送到显示器的信号,以便它可以绘制屏幕。

© www.soinside.com 2019 - 2024. All rights reserved.