zoukankan      html  css  js  c++  java
  • Directx11_使用Effect框架包装ComputeShader

        很多人使用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了。

  • 相关阅读:
    linux 获取外网ip地址
    出现大量rcuob进程
    禁用 ipv6
    centos yum 坏掉 db 损坏
    关于 solusvm
    VMWare 下 Ubuntu 18.04 的文件共享
    安装最新版本 nginx
    大量的Close_wait 发现的 too many open file 错
    Linux安装Desktop 和 vncserver
    MySQL in和limit不能连用的问题
  • 原文地址:https://www.cnblogs.com/bester/p/3255784.html
Copyright © 2011-2022 走看看