• 热门专题

Directx11_使用Effect框架包装ComputeShader

作者:  发布日期:2011-12-12 15:36:16
Tag标签:Directx11  Effect框架  
  •     很多人使用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里面通过Apply,DrawIndexed等来调用。

    void Mesh::DrawMesh(CModelViewerCamera* gCamera)

    {

    ……

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

    {

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

             m_pContext->DrawIndexed();

         }

    ……

    }

        看到有些人问如果只想使用Directx11的DirectCompute这个通用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了。

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规