挂钩 DirectX 使场景中的对象透明
Hook DirectX to make objects in scene transpanent
我擅长 C# 编程,我想知道是否可以从 另一个 DirectX 程序创建大约五十个人的对象,这样我就可以看到它们的背后?如果您提供一些工作示例或 link 一些教程以引导我走向正确的方向,我将很高兴。
- 我不关心 DirectX 版本,但如果它能在版本 9 及更高版本上运行就更好了。
- 我对修补 DLL 一无所知,所以如果它只使用一些 C# 挂钩而不编辑 dll 就更好了。
- 如果用 C# 不行,用 C++ 就可以吗?
C# 和 C++ 都可以,虽然我更喜欢 C++,但我可以推荐 C# 钩子解决方案,如 EasyHooks:https://easyhook.github.io/。使用 DX9,您可能需要挂钩 BeginScene 函数并应用透明状态,但这样做可能还为时过早。你必须做很多测试。您可能还需要在 Present (dx10/11) 或 EndScene (dx9) 之前修改对象的顶点声明。 IT 取决于对象在每个应用程序中的绘制方式。
您还可以检查 GitHub 上的 Direct3DHook:https://github.com/spazzarama/Direct3DHook
您可以查看挂钩部分的@VuVirt 答案,但挑战在于半透明部分,这里列出了您可能需要考虑的一些事项,具体取决于您要挂钩的应用程序:
- 深度测试:如果对象没有从后向前渲染,您必须禁用深度测试才能看到它们。
- 深度预传:如果引擎进行预传以填充深度,除非您完全禁用该传球,否则您将无法再次看到思想。
- 半透明需要从后到前的顺序才能看起来正确。
- 延迟渲染:不透明在多个渲染目标中渲染并在屏幕中点亮space,在这里调整半透明是没有意义的,而且是完全错误的。
- 遮挡剔除:如果应用程序执行遮挡剔除,您想要看到的对象甚至可能不会发送到 DirectX。
- 各种 post 过程可能需要不透明才能复制表面。
- 路上还有许多其他障碍。
我擅长 C# 编程,我想知道是否可以从 另一个 DirectX 程序创建大约五十个人的对象,这样我就可以看到它们的背后?如果您提供一些工作示例或 link 一些教程以引导我走向正确的方向,我将很高兴。
- 我不关心 DirectX 版本,但如果它能在版本 9 及更高版本上运行就更好了。
- 我对修补 DLL 一无所知,所以如果它只使用一些 C# 挂钩而不编辑 dll 就更好了。
- 如果用 C# 不行,用 C++ 就可以吗?
C# 和 C++ 都可以,虽然我更喜欢 C++,但我可以推荐 C# 钩子解决方案,如 EasyHooks:https://easyhook.github.io/。使用 DX9,您可能需要挂钩 BeginScene 函数并应用透明状态,但这样做可能还为时过早。你必须做很多测试。您可能还需要在 Present (dx10/11) 或 EndScene (dx9) 之前修改对象的顶点声明。 IT 取决于对象在每个应用程序中的绘制方式。 您还可以检查 GitHub 上的 Direct3DHook:https://github.com/spazzarama/Direct3DHook
您可以查看挂钩部分的@VuVirt 答案,但挑战在于半透明部分,这里列出了您可能需要考虑的一些事项,具体取决于您要挂钩的应用程序:
- 深度测试:如果对象没有从后向前渲染,您必须禁用深度测试才能看到它们。
- 深度预传:如果引擎进行预传以填充深度,除非您完全禁用该传球,否则您将无法再次看到思想。
- 半透明需要从后到前的顺序才能看起来正确。
- 延迟渲染:不透明在多个渲染目标中渲染并在屏幕中点亮space,在这里调整半透明是没有意义的,而且是完全错误的。
- 遮挡剔除:如果应用程序执行遮挡剔除,您想要看到的对象甚至可能不会发送到 DirectX。
- 各种 post 过程可能需要不透明才能复制表面。
- 路上还有许多其他障碍。