zoukankan      html  css  js  c++  java
  • 平面投影

    void RenderShadow(){
        Device->SetRenderState(D3DRS_STENCILENABLE,    true);
        Device->SetRenderState(D3DRS_STENCILFUNC,      D3DCMP_EQUAL);
        Device->SetRenderState(D3DRS_STENCILREF,       0x0);
        Device->SetRenderState(D3DRS_STENCILMASK,      0xffffffff);
        Device->SetRenderState(D3DRS_STENCILWRITEMASK, 0xffffffff);
        Device->SetRenderState(D3DRS_STENCILZFAIL,     D3DSTENCILOP_KEEP);
        Device->SetRenderState(D3DRS_STENCILFAIL,      D3DSTENCILOP_KEEP);
        Device->SetRenderState(D3DRS_STENCILPASS,      D3DSTENCILOP_INCR); // increment to 1
    
        // position shadow
        D3DXVECTOR4 lightDirection(0.707f, -0.707f, 0.707f, 0.0f);
        D3DXPLANE groundPlane(0.0f, -1.0f, 0.0f, 0.0f);
    
        D3DXMATRIX S;
        D3DXMatrixShadow(
            &S,
            &lightDirection,
            &groundPlane);
    
        D3DXMATRIX T;
        D3DXMatrixTranslation(
            &T,
            TeapotPosition.x,
            TeapotPosition.y,
            TeapotPosition.z);
    
        D3DXMATRIX W = T * S;
        Device->SetTransform(D3DTS_WORLD, &W);
    
        // alpha blend the shadow
        Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
        Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
        Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    
        D3DMATERIAL9 mtrl = D3d::InitMtrl(D3d::BLACK, D3d::BLACK, D3d::BLACK, D3d::BLACK, 0.0f);
        mtrl.Diffuse.a = 0.5f; // 50% transparency.
    
        // Disable depth buffer so that z-fighting doesn't occur when we
        // render the shadow on top of the floor.
        Device->SetRenderState(D3DRS_ZENABLE, false);
    
        Device->SetMaterial(&mtrl);
        Device->SetTexture(0, 0);
        Teapot->DrawSubset(0);
    
        Device->SetRenderState(D3DRS_ZENABLE, true);
        Device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
        Device->SetRenderState(D3DRS_STENCILENABLE,    false);
    }
  • 相关阅读:
    antd4.x Form组建改变
    react hook 使用注意点
    Dockerfile怎么编写
    在spring boot中3分钟上手阿里巴巴服务熔断系统sentinel
    容器和镜像的导入导出及部署
    设计模式之 ==> 装饰器设计模式
    Jenkins + Gradle + Docker 自动化部署 SpringBoot 项目到远程服务器
    Linux运维常用的40个命令总结
    ceph集群部署
    tcpdump常用命令
  • 原文地址:https://www.cnblogs.com/moniza/p/3540305.html
Copyright © 2011-2022 走看看