DLSS Swapper:不更新游戏,直接替换游戏里的 DLSS dll
【免费下载链接】dlss-swapper项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper
新版 DLSS 想用在老游戏上,一般只能等厂商发更新。DLSS Swapper 的思路是绕过更新本身:游戏目录里已有的 DLSS、FSR、XeSS dll,它给你替换成挑好的版本,随时换回去,全程不碰游戏本体。边界也先说清楚:不支持的游戏加不了 DLSS,换版本也不保证一定更好。它是个 Windows 10 64 位(20H1 起)桌面应用,分安装版和便携版两种。
谁该用,谁别用
结论先放这儿:手里已有带 DLSS/FSR/XeSS 的游戏、只是想换版本对比效果,用它;想给游戏"加"DLSS,别碰它。
适合这 3 类:
- 游戏已带这些技术,想在厂商补丁发布前先试新版,对比画面和帧数
- 多台机器管同一批 dll 版本,便携版解压即用,设置跟着 exe 走
- 想把某款游戏钉在旧版 dll 上,又不想手动去动游戏文件
不适合这 2 类:
- 想给不支持这些技术的游戏"加"DLSS——官方明确做不到
- 期望"换了必涨帧"——极端情况游戏会直接起不来,好在工具保留了原始 dll 供回退
装好开起来:DLSS Swapper 安装
官方渠道就两个:项目 release 页和 winget。装它一行命令:
winget install --id=beeradmoore.dlss-swapper -e便携版则是解压 zip,直接跑里面的DLSS Swapper.exe。
启动后第一屏是游戏网格:游戏按 Steam、GOG、Epic 等库分组,每张封面下角标着当前在用的 DLSS 版本,N/A 表示这游戏没挂 dlss。支持的库有 6 个——Steam、GOG、Epic Games、Ubisoft Connect、Xbox App、Battle.net,外加Add Game按钮手动添加。点进某款游戏,能下载目标版本、选 DLSS 预设,一键切换。
它凭什么干活:dll 从哪来、怎么校验
DLSS Swapper 替换 dll 的流程不复杂:dll 不打包在程序里,应用按清单src/Assets/static_manifest.json里的下载地址取 dll,下载完用 MD5 校验,通过才落到游戏目录。每份可下载的 DLSS 都带版本号、内部名、两个 MD5:
{ "version": "1.0.0.0", "internal_name": "FineTune", "md5_hash": "65D2E2A86352D77244A73BEDD5837F50", "zip_md5_hash": "8AD2617AD75DA83CDFCBD36B5DF55CD0" }md5_hash校验 dll 本身,zip_md5_hash校验压缩包,对不上就判定文件损坏或被篡改,不会往游戏目录写。
状态存哪也有说法:安装版把配置和缓存放在%LOCALAPPDATA%\DLSS Swapper\,便携版放在 exe 同级的StoredData\(见 docs/how-it-works/readme.md)。里面是 SQLite 库dlss_swapper.db,记录每款游戏当前挂的 dll 版本,顺带管收藏、备注、最近使用的版本。DLSS、DLSS-D、DLSS-G 的预设选项各由一个 JSON 定义,放在src/Assets/下。
家底清点
7 个干实事的依赖,版本以 DLSS Swapper.csproj 为准:
| 干什么的 | 组件 | 版本 |
|---|---|---|
| 界面框架 | Microsoft.WindowsAppSDK | 1.8.260921001 |
| 本地记录库 | SourceGear.sqlite3 | 3.53.4 |
| 日志 | Serilog | 4.4.0 |
| 显卡识别 | NvAPIWrapper.Net | 0.8.1.101 |
| Battle.net 配置解析 | Google.Protobuf | 3.36.2 |
| Steam 配置解析 | ValveKeyValue | 0.72.0.534 |
| 游戏名模糊搜索 | FuzzySharp | 2.0.2 |
这些组件咬合得很紧:WinUI 3 出界面,SQLite 记每款游戏挂的 dll 状态,manifest 供版本号和 MD5 做校验。Google.Protobuf 解析 Battle.net 的本地配置,ValveKeyValue 解析 Steam 的 ACF 文件,把游戏目录找出来;FuzzySharp 让几百款游戏按模糊名秒搜,不用背全名。
想自己动手构建(普通用户可跳过)
构建入口是package/下的 build_all.cmd,先刷清单,再走两条打包线:
call ..\extras\update_manifest.cmd || goto :error call build_Portable.cmd || goto :error call package_Portable.cmd || goto :error call build_Installer.cmd || goto :error call package_Installer.cmd || goto :error刷新清单靠 update_manifest.cmd 里一行 curl,从上游 manifest 仓库拉最新 JSON 覆写本地,这样清单能独立于发版节奏更新。便携线和安装线只差一个配置:安装线走Release,便携线走Release_Portable,后者多定义一个PORTABLE宏,决定数据落到哪里。版本号 1.2.7.0 在 csproj、config.cmd、Installer.nsi 三处一致,安装包文件名和实际构建出自同一套号。
安装器由 NSIS 脚本 Installer.nsi 打包,FindProcDLL 插件在安装和卸载前检查程序是否在运行,避免覆盖正在使用的文件。卸载会清掉已下载和导入的 dll,但对游戏做过的改动会保留。校验加上这套渠道管理,官方只认 Releases 与 winget 两个分发口。
想直接用:拿最新 release 或者 winget 一行装好就行,构建链路可以不管。想改它:把仓库克隆到本地,在package/下跑一遍 build_all.cmd。
【免费下载链接】dlss-swapper项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考