0

我们的项目是分析 DirectX 10 或 11 SDK 应用程序或游戏(生化奇兵、孤岛惊魂等)应用程序中使用的各种顶点和像素、几何着色器。

现在我们需要对着色器(VS、GS、PS)何时被使用或在管道中执行时有一个技术性的了解,我们知道在 Draw() DirectX API 调用期间,设置着色器获取在管道内执行。

  1. 除了 Draw() 调用之外,是否还有其他 API 可以在内部执行或利用使用 SetShader() 设置到 Pipeline 的 Shader?

  2. 设备 API(例如 Map、unmap、getResourcem 和 Copy 资源)是否间接操纵着色器?

任何与 DirectX 运行时或图形驱动程序中的着色器使用相关的指针,而不是 DirectX Draw() API 调用,都将有助于我们识别并拥有健壮的实现。

4

1 回答 1

1
  1. 是的,检查计算着色器,特别是 Dispatch() 方法。
  2. 不,着色器只是一种状态信息,因此一旦它们加载到 ID3D11*Shader 对象中,它们就无法更改。如果您想反编译它们,请查看 Shader Reflection API。
于 2012-01-09T20:52:58.823 回答