挂钩 DirectX 使场景中的对象透明

Hook DirectX to make objects in scene transpanent

我擅长 C# 编程,我想知道是否可以从 另一个 DirectX 程序创建大约五十个人的对象,这样我就可以看到它们的背后?如果您提供一些工作示例或 link 一些教程以引导我走向正确的方向,我将很高兴。

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 过程可能需要不透明才能复制表面。
  • 路上还有许多其他障碍。