代码之家  ›  专栏  ›  技术社区  ›  PiotrK

用于Direct3D 6.1的挂钩,用于用明暗器替换EMBM

  •  0
  • PiotrK  · 技术社区  · 16 年前

    我正在为DirectX 6.1编写Windows挂钩。我想截获对EMBM(环境映射凹凸映射)的调用,并将数据传递给自己的凹凸着色器,这样依赖于EMBM的应用程序就可以正常工作。唯一的问题是,DX6.1根本不允许使用着色器。我不能简单地用更新的sdk中的类替换direct3device3,因为它的方法使用不同的参数集,而使用挂接的dll的应用程序将崩溃。我不知道如何解决问题。我不太擅长DirectX(也许有更有效的方法在DX6.1中实现bump,它可以在现代硬件上工作?)也许可以在D3device中查询一些允许我使用着色器的接口?

    任何能给我指明正确方向的东西都会非常感谢。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Goz    16 年前

    每个直接的3D设备都是直接从iunknown派生出来的,所以不,你不能从V6设备到V9设备进行QI。

    你唯一能做你想做的(高于驱动程序级别)的方法是实现整个V6设备并将所有调用转换为它们的V9等价物。当然,如果游戏通过V7或V8实现EMBM,你会遇到一个问题…

    推荐文章