Directx Direct3D 6.1的挂钩,用着色器替换EMBM

Directx Direct3D 6.1的挂钩,用着色器替换EMBM,directx,hook,shader,Directx,Hook,Shader,我正在为DirectX 6.1编写Windows钩子。我想截获对EMBM(环境映射凹凸贴图)的调用,并将数据传递给自己的凹凸着色器,以便依赖于EMBM的应用程序能够正常工作。唯一的问题是DX 6.1根本不允许着色器。我不能简单地用更新SDK中的类替换Direct3DDevice3,因为它的方法使用不同的参数集,而使用挂钩dll的应用程序将崩溃。我不知道如何解决这个问题。我不太擅长DirectX(也许有更有效的方法在DX 6.1中实现bump,可以在现代硬件上使用?)也许可以在D3设备中查询一些允

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


任何能为我指明正确方向的东西都将不胜感激。

每个Direct 3D设备都直接源自IUnknown,因此您无法将其从v6设备转换为v9设备

您可以做您想做的事情(高于驱动程序级别)的唯一方法是实现整个v6设备,并将所有调用转换为其v9等价物。当然,如果游戏通过v7或v8实现embm,您就会遇到问题