• 平面投影


    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);
    }
  • 相关阅读:
    异常总结
    反射
    面试题
    继承多态接口
    JAVA面向对象变成学习!
    学生管理系统---三层架构
    Secondary NameNode
    Hadoop之HDFS
    大数据相关概念二
    大数据相关概念
  • 原文地址:https://www.cnblogs.com/moniza/p/3540305.html
Copyright © 2020-2023  润新知