我正在使用 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 图像(直接 3D,OpenGL),还有一些(主要是2D/伪3D)使用直接绘图直接将 2D 图像输出到视频卡。了解您的游戏使用哪种方式可能会很有用,因为每种方式可能有不同的工具或模式。
据我发现:
Primitive wars
似乎可以与 DirectX/OpenGL 配合使用Starcraft (before 1.18)
,Horde 2
并且Warlords 3
可能使用 DirectDraw- 我没有找到有关的任何信息
Dispel
,Rage of Mages 2
但从它们的外观来看,我猜也是 DirectDraw。
不幸的是,据我所知,在列出的任何游戏中,都没有任何支持任何高级缩放器的黑客。星际争霸(1.16 及以下)有一些下面列出的扩展器。
DD黑客
DDHack
但是,您可能想尝试一个名为aka 的程序DirectDraw Hack
。它至少为 DirectDraw 游戏提供了某种缩放器。不如 2xSAI 好,但总比没有好。它仅适用于某些游戏,即使可以运行,也可能存在错误,但可能值得一试。
它的工作原理如下:
- 下载并解压。您可能想尝试以下几个版本:一,二,三
- 将游戏文件夹中的文件替换
ddraw.dll
为下载中包含的文件。如果您找不到这样的文件,很可能它无法用于您的游戏。请务必备份原始文件! ddhack.cfg
使用纯文本编辑器(如记事本) 编辑文件。它有一个由空格分隔的选项列表。您可能对halfnhalf
和bilinear
选项感兴趣 - 将其中一个输入到文件中并保存。如果启动游戏时只出现黑屏,请尝试同时包含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.
该游戏可以使用一些分辨率扩展器(即可以看到更多地图但保持原始分辨率):
- WSGF 分辨率扩展器下载
- 混沌启动器
- 暗黑破坏神OnVista
- 星际争霸分辨率黑客下载(点击
» Скачать StarCraft Resolution Hack v.1.1 «
开始下载)
这些应该包含基本说明。大多数要求将星际争霸更新到最新的非重制版本 (1.16.1)。
完全疯狂的拼凑
这纯粹是疯狂的,但理论上你可以:
- 强制你的视频卡识别不存在的显示器
- 让你的游戏在屏幕上绘制图片(你看不到)
- 获取 DirectX 屏幕抓取工具(例如用于播放 YouTube 视频的程序)来播放隐形屏幕
- 使用普通显示器上的视频播放器打开视频流
- 加载 FFmpeg libmpcodecs
hq2x
或2xsai
类似的过滤器(如果它们在 Windows 操作系统上运行的话) - 将播放器窗口扩展至全屏,然后按 alt+tab 转到实际游戏
然后,您将在自己的电脑上查看视频播放器,该播放器正在播放您游戏中的视频。如果游戏需要硬件鼠标光标,则该播放器将无法工作,并且还会产生轻微的延迟。
我知道这很荒谬,但我从未尝试过。我完全不确定这是否真的有效。如果有人真的认为这种方法值得一试,请发表评论。