更改 Windows 低分辨率平滑算法

更改 Windows 低分辨率平滑算法

我正在使用 Windows 8.1 并在其上运行一些旧游戏(它们完全兼容)。其中许多使用 800x600 甚至 640x480 分辨率,但我有 1920x1080 显示屏。缩放时,Windows 提供了某种平滑处理(我猜是最近邻算法),但效果很差。我想使用一些高级方法,例如 2xSAI。如果我在 DOS 框中运行某些东西,我可以轻松选择缩放算法,我希望在 Windows 中使用类似的东西。由于我有 AMD 显卡(r9 380),我发现它的驱动程序中有一些图形增强功能,包括平滑方法。但它对旧游戏没有影响(我猜是因为它们甚至不使用 OpenGL 或 DirectX)。那么,有没有办法选择低分辨率平滑方法?

UPD。在 AMD 驱动程序中发现“GPU 缩放”标志。有了它,即使是旧的 2D 游戏也可以使用一些抗锯齿功能。不过,这里没有可用的插值算法选择。

游戏列表:《驱散》(1999 年)、《部落 2:堡垒》(2001 年)、《星际争霸:母巢之战》(1998 年)、《法师之怒 2:死灵法师》(1999 年)、《原始战争》(2002 年)和《魔兽争霸 3:黑暗领主崛起》(1998 年)。

答案1

2017+ 更新

自发布答案以来,暴雪已完全重写了星际争霸渲染,因此所述方法不再适用于该游戏。它现在应该内置了升频器,并且可以通过暴雪官方商店购买全新的“重制”高清纹理包。

我决定保留下面的文本,因为它可能有助于处理具有类似引擎的旧游戏(例如原版暗黑破坏神)或玩仅适用于 v1.16.1 的旧自定义地图。

解释

默认情况下,显示器本身会进行缩放。不同的显示器具有截然不同的缩放器 - 有些非常好,有些看起来很难看,但没有一个是 2xsai 或 advmame。通常,带有 VGA 输入的电视的缩放效果比主流显示器要好一些。

有些人甚至会购买二手 CRT 显示器:这些显示器通常能呈现更好的图像,因为它们没有固定的物理像素 - 它们的分辨率是模拟的,“平滑”附近的像素,而旧游戏通常期望这种“缩放”发生。

启用GPU scaling(如果可用)可使视频卡使用硬件中实现的缩放器进行缩放。它不可配置,但可能包含一些过滤,因此比显示器做得更好。

因为要做到这一点,你至少需要拦截来自游戏的明确的分辨率更改命令,任何解决问题的方法都是某种黑客攻击,这是一项非常复杂的任务,并且任何黑客攻击都可能引入视频或游戏问题。

换句话说,您需要以某种方式破解游戏输出和 GPU 输入之间的缩放器。

一些老游戏现在有现代的粉丝制作版本或包装器,可能支持缩放器,但这些大多仅限于模拟器(例如 MAME、PCSX、DOSBOX、SCUMMVM)。这是因为它们不需要在操作系统/视频卡和游戏之间进行破解 - 它们无论如何都会模拟整个视频系统,因此它们更容易将过滤器应用于生成的图像。

对于某些游戏,开发了黑客技术来在屏幕上显示大部分游戏世界(不缩放) - 这不是您想要的,但至少游戏看起来不像缩放时那么丑陋。

游戏以不同的方式输出图形 - 有些使用 Windows API(图形设计),有些依靠显卡硬件来渲染 3D 图像(直接 3DOpenGL),还有一些(主要是2D/伪3D)使用直接绘图直接将 2D 图像输出到视频卡。了解您的游戏使用哪种方式可能会很有用,因为每种方式可能有不同的工具或模式。

据我发现:

  • Primitive wars似乎可以与 DirectX/OpenGL 配合使用
  • Starcraft (before 1.18)Horde 2并且Warlords 3可能使用 DirectDraw
  • 我没有找到有关的任何信息DispelRage of Mages 2但从它们的外观来看,我猜也是 DirectDraw。

不幸的是,据我所知,在列出的任何游戏中,都没有任何支持任何高级缩放器的黑客。星际争霸(1.16 及以下)有一些下面列出的扩展器。

DD黑客

DDHack但是,您可能想尝试一个名为aka 的程序DirectDraw Hack。它至少为 DirectDraw 游戏提供了某种缩放器。不如 2xSAI 好,但总比没有好。它仅适用于某些游戏,即使可以运行,也可能存在错误,但可能值得一试。

它的工作原理如下:

  • 下载并解压。您可能想尝试以下几个版本:
  • 将游戏文件夹中的文件替换ddraw.dll为下载中包含的文件。如果您找不到这样的文件,很可能它无法用于您的游戏。请务必备份原始文件!
  • ddhack.cfg使用纯文本编辑器(如记事本) 编辑文件。它有一个由空格分隔的选项列表。您可能对halfnhalfbilinear选项感兴趣 - 将其中一个输入到文件中并保存。如果启动游戏时只出现黑屏,请尝试同时包含altwinpos选项。
  • 运行游戏。如果可以运行,它看起来至少会好一点。

窗口

另一个程序现在可能适用于某些类型的游戏(DirectDraw 和 Direct3D),但它只有一个双线性缩放器。我想,总比没有好。

  • 下载它这里,解压并运行
  • 前往Menu -> Edit -> Add创建新的游戏资料
  • 进入path你想运行的游戏
  • Run in window如果您想以全屏模式运行游戏,请取消勾选
  • 转到Video -> Resolution并将其设置为显示器的原始分辨率
  • DirectX -> Filtering选择下Full Bilinear
  • 点击Ok,选择新创建的档案,选择Menu -> File -> Run开始游戏
  • 如果游戏不起作用,请选择Menu -> Edit -> Modify并尝试调整其中的其他参数。
  • DxWnd 的文档是这里

理论上,我猜在 DxWnd 中实现像 2xsai 这样的缩放器并不太难,而且源代码是开放的,但仍然需要一些人来完成一些工作……

星际争霸(v1.16 及以下版本)破解

Please read the message on top of this post.

该游戏可以使用一些分辨率扩展器(即可以看到更多地图但保持原始分辨率):

这些应该包含基本说明。大多数要求将星际争霸更新到最新的非重制版本 (1.16.1)。

完全疯狂的拼凑

这纯粹是疯狂的,但理论上你可以:

  • 强制你的视频卡识别不存在的显示器
  • 让你的游戏在屏幕上绘制图片(你看不到)
  • 获取 DirectX 屏幕抓取工具(例如用于播放 YouTube 视频的程序)来播放隐形屏幕
  • 使用普通显示器上的视频播放器打开视频流
  • 加载 FFmpeg libmpcodecshq2x2xsai类似的过滤器(如果它们在 Windows 操作系统上运行的话)
  • 将播放器窗口扩展至全屏,然后按 alt+tab 转到实际游戏

然后,您将在自己的电脑上查看视频播放器,该播放器正在播放您游戏中的视频。如果游戏需要硬件鼠标光标,则该播放器将无法工作,并且还会产生轻微的延迟。

我知道这很荒谬,但我从未尝试过。我完全不确定这是否真的有效。如果有人真的认为这种方法值得一试,请发表评论。

相关内容