2

我开始学习使用 c 和内联汇编的低级图形编程。我找到了关于如何进行 VGA 编程的好资源,但我需要了解 SVGA。我找不到很多关于 SVGA 的资源,我仍然不清楚它们之间的区别是什么。

我的问题是:

有人可以帮我知道VGA和SVGA之间的区别吗?有关 VGA 编程的资源会帮助我开始使用 SVGA 进行图形编程吗?有没有什么好的资源可以学习用 assemble 进行 SVGA 编程,你们可以分享吗?

非常感谢你

4

2 回答 2

5

VGA 是一种特定的视频卡(由 IBM 设计)。由于克隆制造商,它成为了事实上的标准,并且大多数视频卡仍然能够支持古老的 VGA 卡的硬件接口(出于向后兼容的目的)。

SVGA 是一个笼统的术语,用于描述“优于 VGA”。这些卡没有标准(事实上的或其他的);20 种不同的“SVGA”卡将拥有 20 种完全不同的硬件接口、分辨率和功能;它们之间没有任何兼容性(除了用于向后兼容的传统 VGA)。

当有人谈论“SVGA 编程”时,他们可能指的是两种截然不同的事情之一——要么为一张特定的 SVGA 卡编写代码(这对于任何其他 SVGA 卡都不会/不能工作);或者(更有可能)编写依赖于 VBE 扩展的代码。

请注意,VBE 扩展是一个软件接口/API,可用于找出卡支持的视频模式、设置视频模式和设置帧缓冲区。它通常内置在视频卡的 ROM 中,并且存在以便软件可以使用通用 API 而不是支持许多不同的硬件接口。

于 2015-09-22T14:00:39.503 回答
3

VGA = 视频图形阵列。SVGA = 超级视频图形阵列。VGA = 640 x 480 像素(最初为 4 色)。SVGA = 800 x 600 像素。

由于您没有指定任何目标架构,因此我假设该架构是通用的。

如果您要进行低级 C 编程,只需分配一个 (width * height * bitsPerPixel / 8) 字节的大缓冲区,其中宽度为 640,对于 VGA,高度为 480。最后一个,bitsPerPixel 将由您自己选择。- 这就是“帧缓冲区”通常如何在内存中排列的基础知识。您可以在此缓冲区中随意读取/写入 RGB 或索引像素。

用汇编语言处理它与用 C 或任何其他语言处理它的方式没有什么不同。

另一方面,如果您想在微控制器上实现实时视频接口,我会修改我的答案。

于 2015-09-22T13:32:05.187 回答