在图形驱动程序中使用除Draw()API调用之外的DirectX 10.0或11.0顶点或像素着色器

时间:2012-01-05 13:42:14

标签: directx 3d shader directx-10 directx-11

我们的项目是分析DirectX 10或11 SDK应用程序或Game(BioShock,Far Cry等)应用程序中使用的各种Vertex和Pixel,Geometry着色器。

现在我们需要技术理解Shaders(VS,GS,PS)何时被使用或者更确切地在管道中执行,我们知道在Draw()DirectX API调用期间,设置着色器得到了在Pipeline中执行。 / p>

  1. 是否有除Draw()之外的其他API调用,它可以在内部执行或利用使用SetShader()设置为管道的着色器?

  2. Device API(例如,Map,unmap,getResourcem和Copy资源)间接操纵着色器吗?

  3. 与DirectX运行时或除DirectX Draw()API调用之外的图形驱动程序中的着色器的使用相关的任何指针将有助于我们识别并具有强大的实现。

1 个答案:

答案 0 :(得分:1)

  1. 是,请选中Compute Shaders,特别是Dispatch()方法。
  2. 不,着色器只是一个状态信息,所以一旦它们加载到ID3D11 * Shader对象中,它们就不会改变。如果要对它们进行反编译,请查看Shader Reflection API。