Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

Directx11_使用Effect框架包装ComputeShader

来源: qiul12345 分享至:

    很多人使用Effect框架基本针对渲染功能,典型如:

technique11 meshTech

{

pass p0

{

SetVertexShader(CompileShader( vs_4_0,VS_DRAW() ) );

SetGeometryShader(NULL);

SetPixelShader(CompileShader( ps_4_0,PS_DRAW() ) );

SetRasterizerState(rsSolid);

SetDepthStencilState(EnableDepthWrite,0);

}

}

    在Directx里面通过ApplyDrawIndexed等来调用。

void Mesh::DrawMesh(CModelViewerCamera* gCamera)

{

……

for(int i=0;i<techDesc.Passes;i++)

{

        m_pfxMeshTech->GetPassByIndex(i)->Apply(0,m_pContext);

         m_pContext->DrawIndexed();

     }

……

}

    看到有些人问如果只想使用Directx11DirectCompute这个通用GPU计算接口,而与渲染无关,可以用Effect框架吗?我自己测试了下后发现答案是可以的。只是有稍微不同。

    先看HLSL的代码。

technique11 MtxTransposeTech

{

pass p0

{

  SetComputeShader(CompileShader( cs_5_0,MatrixTranspose() ) );

}

}

    然后在Directx中调用它。

m_pfxMtxTransTech->GetPassByIndex(0)->Apply(0,m_pContext);

 m_pContext->Dispatch(SIZEX,SIZEY,1);

    就ok了。


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史