aspect-ratio - 实现 VGA 80x25 文本控制台纵横比

标签 aspect-ratio vga

我想实现一个具有旧 vga+crt 监视器图形配置外观和感觉的文本控制台。为此,我需要有关典型设置的渲染纵横比的信息。

  • 使用 9 x 16 单元的 80 x 25 的比例为 720x400。我从未见过这种比例的显示器(比 16:9 略宽)。 720x400 也是显示 windows 9x 启动图像时的分辨率。
  • 我已经测量了视频 8088 损坏的比率。它给了我一个 3:2 的比例。
  • 我一直在 4:3 显示器上工作,它在硬件文本模式下提供了巨大的拉伸(stretch)
  • Dosbox 使用 8:5 的比例,这对于 320x200 分辨率是有意义的

  • 那么渲染基于 block 字符的ansi-art(例如ENDOOM block )的正确比例是多少?

    请注意,我说的是显示器上显示的纵横比。我知道我使用的 CRT:s 具有修改输出图像宽度和高度的选项,但如果存在,用户将如何设置这些选项。我将 v 控件设置为全屏尺寸,给出拉伸(stretch)字符,但对于 win95 启动图像的比例正确。

    最佳答案

    没有人说像素是正方形的。

    事实上,在 VGA 出现并提供 640x480 之前,IBM 风格的 PC(我不知道 Macintosh 或 Amiga 是否这样做)没有常见的视频适配器/显示器组合呈现方形像素。

    请记住,VGA 是为 CRT 设计的模拟技术。特别是分辨率和刷新率是由主板上的视频适配器控制的,而不是显示器。监视器电子设备可以从左到右和从上到下(在电子设备可以承受的频率范围内)运行电子束,以产生视频 Controller 卡想要输出的任何像素分辨率。像素是可寻址元素,而不是显示元素,它们的“矩形”程度取决于显示器(大多数显示器都有调整显示器 V 尺寸的控件,因此比例不固定)。

    尽管有“标准”分辨率(这基本上意味着它们已明确列出并受到 IBM PC BIOS 的支持),但如果您知道您使用的是哪种硬件,您可能会重新编程视频适配器以呈现不寻常的分辨率。几个视频游戏就是这样做的。

    我还记得一个实用程序,它对原始 IBM PC(“MDA”)的单色显示适配器进行了重新编程,以在文本模式下呈现 26 行,而不是 25 行。如果你愿意,该实用程序使用额外的行来输出“状态栏”, Caps Lock、Scroll Lock 和 Num Lock 状态(当时的键盘没有状态灯)。有趣的是,MDA 适配器没有足够的 RAM 来容纳一整行额外的文本,所以视频输出电路在缓冲区的末尾翻转,第 26 行的最后三分之一左右重复了第一行屏幕左上角的几个字符。你和那个一起生活。 (该实用程序也适用于 Hercules 视频适配器,它使用相同的 Controller 芯片,但有更多的 RAM 来支持图形模式,因此不会出现重复字符溢出)。

    您还没有听说过 720x400,因为没人关心。程序无法在此模式下处理单个像素,因为它们是由字符生成器电路动态生成的,所以这真的无关紧要。 VGA 适配器电路显然可以以这个频率驱动显示器,所以理论上你可以有一个高分辨率的图形模式,但是适配器没有足够的 RAM 来支持它(电子设备中的其他限制也可能是存在;例如,是否可以足够快地扫描视频 RAM?我不知道。)

    编辑,有一些说明:

    需要 V 尺寸调节旋钮,因为 CRT 电子设备无法以经济的方式精确精确。需要一些摆动空间和手动调整控制垂直扫描范围的电压,以考虑壁电流的电压变化、电子设备老化(特别是电容器)等。目的是使用旋钮调整结果高度,直到输出是“正确的”(大约 4x3)。当电子设备变得足够复杂以自动进行这些调整时,这些旋钮最终消失了。

    要回答您的最后一个问题:您必须承认像素不是正方形的事实。忠实的外观需要您以您选择的分辨率将渲染图像 720x400 矩阵缩放(压缩或拉伸(stretch))为 4x3 比例。它不会很锋利,我可以计算像素;它不可能是。这与笔记本电脑制造商在 LCD 面板上呈现文本模式的问题相同。

    关于aspect-ratio - 实现 VGA 80x25 文本控制台纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520480/

    相关文章:

    c++ - Qt 中的可伸缩图形用户界面

    video - FFmpeg - 使用宽高比更改视频的分辨率

    html - 基于父高度的 CSS Square

    iphone、ipad VGA 外部显示器 - tvOutManager

    assembly - 部件8086中的图形模式

    oop - 在函数内部创建对象是否可以

    android - VideoView 匹配父高度并保持纵横比

    iphone - 处理 iPad 上的外部屏幕

    c - 在 C : OSdev 中绘制像素

    css - 宽高比媒体查询的正确值是多少?