
DDrawCompat让老游戏在 Windows 10/11 上跑起来的 DirectDraw 兼容层【免费下载链接】DDrawCompatDirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompatDDrawCompat 是一个开源的 DirectDraw 兼容层形态上就是一个 ddraw.dll 文件专门处理仍在使用 DirectX 1-7 这套老图形接口的老游戏和老软件。把它放进游戏目录游戏里的闪退、画面撕裂、色彩错乱、光标错位等问题通常都会消失。工作原理老游戏就像只带一种老式插头的电器而现代 Windows 提供的是新式插座。DDrawCompat 就是插在两者之间的转接器游戏插进去的还是它习惯的老接口真正送到显卡的电已经在中间被转换过了。具体做法是DLL 在游戏启动时接管 DirectDraw 和 Direct3D 1-7 的函数调用对其中出问题的部分做参数修正、状态修补和窗口管理入口代码在 Dll/ 目录里。需要注意一点它不做整体 API 转换大部分渲染仍由系统自带的老图形库完成DLL 只在出问题的那个环节动手所以对性能的影响很小。获取文件、放进游戏目录、验证是否加载第一步获取 ddraw.dll。两种方式从项目的 releases 页面下载最新版压缩包文件名带 debug 的版本别用或者克隆仓库自己编译git clone https://gitcode.com/gh_mirrors/dd/DDrawCompat第二步把解压或编译出的 ddraw.dll 复制到游戏主程序.exe所在的目录。注意确认位数匹配32 位游戏用 32 位 DLL64 位游戏用 64 位 DLL。如果该目录已经有一个 ddraw.dll多半是另一个兼容补丁先备份原文件再替换。第三步启动游戏回游戏目录看一眼出现了 DDrawCompat-游戏名.log 文件就说明加载成功没有任何日志文件说明 DLL 根本没被游戏拾取先按下一节的排查思路处理。可选操作只有一条想改配置的话在 exe 同目录放一个 DDrawCompat.ini或 DDrawCompat-游戏名.ini即可。几个值得改的高频配置项完整配置模板见 Tools/DDrawCompat.ini每个配置项都带注释。日常只需要动下面这几个配置项作用推荐值FullscreenMode独占全屏改为无边框窗口模式多数撕裂、闪屏问题由此解决borderlessResolutionScale内部渲染分辨率app 表示跟随游戏原始值app(1) 或按倍数调整FpsLimiter限制帧率老游戏帧率过高会出现加速或撕裂off / flipstartVSync垂直同步配合全屏模式抑制撕裂app跟随游戏DisplayFilter画面放大到桌面时使用的缩放滤波bilinear(0)默认值写进 DDrawCompat.ini 里大概是这样FullscreenMode borderless FpsLimiter flipstart DisplayFilter bilinear(0)另外 LogLevel info 保持默认即可排查问题时它直接决定日志详细程度。代码结构速览Dll/ — 入口负责安装函数钩子拦截 DirectDraw、Direct3D、GDI 的调用DDraw/ — DirectDraw 对象的实现与修补主表面、调色板、裁剪器、位块传输Direct3d/ — Direct3D 1-7 的设备、纹理、顶点缓冲、视口等接口处理D3dDdi/ — 对接现代显示设备接口的封装适配器、设备、表面、元着色器Shaders/ — 缩放、颜色键、深度转换等 HLSL 着色器源码Config/ — 解析 DDrawCompat.ini各配置项的定义与校验Overlay/ — 游戏内覆盖窗口ShiftF11 打开配置界面ShiftF12 打开性能统计Gdi/ — GDI 图形界面部分处理窗口、光标、字体、调色板等Input/ — 热键管理打开配置、强制退出等出问题了先看这里游戏目录没有生成日志文件可能原因DLL 没被游戏加载。常见于位数不匹配、游戏自带了另一个 ddraw.dll、或配置里写了 EnableDDrawCompat off。 处理办法确认 DLL 位数与游戏一致备份并移除目录里原有的 ddraw.dll检查配置文件中的 EnableDDrawCompat 是否为 on。独占全屏下画面撕裂或闪烁可能原因老式独占全屏在现代合成器桌面上工作异常。 处理办法配置里写 FullscreenMode borderless无效再叠加 VSync on。8 位调色板游戏出现色带、颜色错乱可能原因现代显卡不再直接支持旧式调色板纹理。 处理办法配置里写 PalettizedTextures on让兼容层在着色器端做调色板查找。游戏跑得比正常速度快可能原因老游戏按旧帧率逻辑计时现代显卡跑得太快。 处理办法把 FpsLimiter 从 off 改为 flipstart 或 flipend 限速。还有几类场景直接不支持遇到时不用继续折腾虚拟机或 Wine 环境、Windows Insider 预览版、需要联网验证的游戏、同时挂其他钩子/录屏工具、以及混用 DirectX 8、OpenGL、Vulkan 等接口的程序。适用边界与去哪里看文档DDrawCompat 适合的对象很明确还在用 DirectX 1-7 和 GDI 的老游戏、老教育软件、老图形工具。如果你的程序用的是 Direct3D 8 及以上、OpenGL 或 Vulkan或者跑在虚拟机里这个兼容层帮不上忙不必继续配置。完整配置项说明见 Tools/DDrawCompat.ini系统要求SSE2、Shader Model 3 等和安装细节见 README.md。【免费下载链接】DDrawCompatDirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考