马上注册领取绝版勋章
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你喜欢这个MOD可以帮我去点个赞 Present Plugin
Present 使用HOOK将“Sleep”函数添加到 DirectX 9 内核(d3d9.dll),以尝试优化CPU使用率,需要注意的是,这并不是优化多核CPU的使用效率,而是在不影响性能的前提下减少CPU使用率。
插件安装指导:
喂,不是吧,你们玩MOD那么久连个SKSE插件都不会安装?直接用MOD管理器加载它安装,或者把压缩包里的DLL丢进 Data\SKSE\Plugins\里面,再问打死。
前置需求
1. Skyrim 1.9.32.0
Present Plugin 功能具体实现思路:
HOOK Direct3DCreate9获取类型为LPDIRECT3D9的Direct3D对象的接口指针,它具有成员函数IDirect3D9 :: CreateDevice,因此只要根据Direct3D对象的接口指针找到Direct3D对象的虚函数表,然后确定 IDirect3D9 :: CreateDevice的内存地址,可以挂钩此函数以获得类型为LPDIRECT3DDEVICE9的设备对象指针,然后根据该设备对象指针找到该设备对象的虚拟功能表,并找到IDirect3DDevice9 :: Present的地址。根据虚拟函数表在内存中,它执行HOOK并向其添加”Sleep“函数。
以上是Present插件的工作原理。 当然,还有一部分我没有提到。 你可以查看源代码去了解它们。
最后,让我们讨论一下 Present 插件的运用场景:
实际上,它不会带来明显的性能改进。 如果你的CPU本身在运行Skyrim时就有很多空闲,那么此插件可能根本无法帮助你,或者你可以尝试使用它来节省电量(嗯,也许笔记本电脑对此更感兴趣,哈哈),其效果取决于您的操作平台。 在实际测试中,它似乎并非对每个用户都有效。 对于较低端的计算机,安装此插件可能更合适。
下载:
源代码:(Preset 的源码,C++ 14标准,平台工具集:Visual Studio 2019,需要配置 DirectX SDK 环境)
未经我的允许,禁止任何人将我的作品以任何形式用作商业用途。
|