C 和 Assembly 中 VGA 和 SVGA 编程的区别

Difference between VGA and SVGA programming in C and Assembly

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

我的问题是:

谁能帮我知道VGA和SVGA的区别? 有关 VGA 编程的资源是否可以帮助我开始使用 SVGA 进行图形编程? 有什么学习SVGA编程的好资源assemble可以分享给大家吗?

非常感谢

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

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

如果您要进行低级 C 编程,只需分配一个大的 (width * height * bitsPerPixel / 8) 字节的缓冲区,其中宽度为 640,VGA 的高度为 480。最后一个,bitsPerPixel 将由您自己选择。 -这就是 'frame buffer' 通常在内存中的排列方式的基础知识。 您可以在此缓冲区内根据需要 read/write RGB 或索引像素。

用汇编语言处理它与用 C 或任何其他语言处理它的方式没有区别。

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

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

SVGA 是一个笼统的术语,用于描述 "better than VGA"。这些卡没有标准(事实上或其他);而20张不同的"SVGA"卡将有20种完全不同的硬件接口、分辨率和特性;它们之间没有任何兼容性(超越传统 VGA 以实现向后兼容性)。

当有人谈论 "SVGA programming" 时,他们可能指的是两种截然不同的事情之一 - 为一种特定的 SVGA 卡编写代码(not/can 不适用于任何其他 SVGA 卡);或者(更有可能)编写依赖于 VBE 扩展的代码。

请注意,VBE 扩展是一种软件 interface/API,可用于查明卡支持的视频模式、设置视频模式以及设置帧缓冲区。它通常内置于视频卡的 ROM 中,因此软件可以使用通用 API 而不是支持许多不同的硬件接口。