修改d3d9.dll强制将AF应用于所有纹理

问题描述 投票:0回答:1

所以我想使用修改后的d3d9.dll在新游戏的视频驱动程序上使旧游戏更好看,该文件将位于主游戏的父目录中。

随着400系列nvidia卡的出现,驱动程序发生了很多变化(可能我还没有确认,也许是amd),否则默认情况下会使较老的游戏看起来更糟。所做的更改是(从nvidia论坛上通过PM友善提供的信息解释):

[从400系列Geforce卡和相关的nvidia驱动程序开始,在旧的DirectX 9游戏中,场景在运动时会在某些纹理上产生过多的像素化。

对于低于基于费米的卡(400系列之前的卡),驱动程序将读取以下选项:QUALITY_ENHANCEMENTS(纹理过滤-质量)PS_TEXFILTER_DISABLE_TRILIN_SLOPE(纹理过滤-三线性优化)PS_TEXFILTER_BILINEAR_IN_ANISO(纹理过滤-各向异性过滤器优化)PS_TEXFILTER_ANISO_OPTS2(纹理过滤-各向异性样本优化)PS_TEXFILTER_NO_NEG_LODBIAS(纹理过滤-负LOD偏差)

其中以下内容在较新的驱动程序中将被忽略:PS_TEXFILTER_BILINEAR_IN_ANISO(纹理过滤-各向异性过滤器优化)PS_TEXFILTER_NO_NEG_LODBIAS(纹理过滤-负LOD偏差)

英文,3期:

  1. 各向异性过滤不适用于某些纹理。

  2. 各向异性过滤不适用于使用负LOD的纹理。设置“纹理过滤-质量”-“高质量”应将AF应用于具有负LOD的纹理,但是此选项已部分中断,因此不会这样做。只有32位DX9驱动程序被破坏(即所有32位DX9游戏,大多数都是32位)。

  3. 设置“纹理过滤-负LOD偏差”-“钳位”已从驱动程序中完全删除,但在控制面板中仍作为安慰剂存在。

虽然我能够找到一种方法来解决Windows 7上的此问题(尽管我还没有机会进行广泛的测试来确认它),但需要修改的相关dll与Win XP不兼容。

我的想法是,如果我可以在游戏主目录中插入经过修改的d3d9.dll来解决这些问题,它将更具模块化且与操作系统要求无关。

我能够获取已被十六进制编辑的d3d9.dll,以忽略游戏中的自定义lod调用(反过来将LOD强制为0),但是强制AF是很好的补充。我发现相关的调用函数是SetSamplerState。

那么,如何为d3d9.dll制作包装?我不会从哪里开始最隐秘的想法...

欢呼声

c# c++ nvidia direct3d directx-9
1个回答
0
投票

我已经找到了解决方案,基本上,有一个了解DirectX9文件的内幕知识的人为我提供了一组相关文件d3d9.dll,d3d9x_24和d3d9x_25.dll,它们将AF x 16强制应用于DX9游戏中的所有纹理(简化了游戏时的视觉效果)。

© www.soinside.com 2019 - 2024. All rights reserved.