我开始学习使用带内联汇编的c进行低级图形编程。我已经找到了有关如何进行VGA编程的良好资源,但我需要了解SVGA。我找不到关于SVGA的很多资源,我仍然不清楚它们之间的区别是什么。
我的问题是:
有人可以帮我了解VGA和SVGA之间的区别吗? 有关编程VGA的资源是否有助于我开始使用SVGA编程图形? 有没有什么好的资源可以学习你们可以分享的汇编SVGA编程?
非常感谢
答案 0 :(得分:5)
VGA是一种特定的视频卡(由IBM设计)。由于克隆制造商它成为事实上的标准,并且大多数视频卡仍然能够支持古老的VGA卡的硬件接口(为了向后兼容目的)。
SVGA是一个用于描述"优于VGA"的总称。这些卡没有标准(事实上或其他方面);和20个不同的" SVGA"卡将具有20个完全不同的硬件接口,分辨率和功能;它们之间没有任何兼容性(除了传统的VGA以便向后兼容)。
当有人谈论" SVGA编程"它们可能意味着两种截然不同的东西中的一种 - 要么为一个特定的SVGA卡编写代码(对于任何其他SVGA卡都不能/不能工作);或者(更有可能)编写依赖于VBE扩展的代码。
请注意,VBE扩展是一个软件接口/ API,可用于查找卡支持的视频模式,设置视频模式以及设置帧缓冲区。它通常内置于视频卡的ROM中,并且存在使得软件可以使用通用API而不是支持许多不同的硬件接口。
答案 1 :(得分:2)
VGA =视频图形阵列。 SVGA =超级视频图形阵列。 VGA = 640 x 480像素(最初为4种颜色)。 SVGA = 800 x 600像素。
由于您未指定任何目标体系结构,我认为该体系结构是通用的。
如果您要进行低级C编程,只需分配一个(宽*高* bitPerPixel / 8)字节的大缓冲区,其中宽度为640,VGA的高度为480。最后一个,bitsPerPixel将是您自己选择的。 - 这是关于框架缓冲区'的基础知识。通常安排在记忆中。 您可以在此缓冲区内根据需要读取/写入RGB或索引像素。
使用汇编语言处理它与使用C语言或任何其他语言处理它的方式没有区别。
另一方面,如果您想在微控制器上实现实时视频接口,我将修改我的答案。