int EShaderBoneMesh::OnRender()
{
if( m_pMeshVerts == NULL )
return 0;
m_pDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME);
m_pDevice->SetSoftwareVertexProcessing(TRUE);
D3DXMATRIX matView, matProj;
LPD3DXEFFECT pShaderEffect = Shader::Instance()->GetEffect();
HRESULT hr = pShaderEffect->SetTechnique("Tech");
hr = m_pDevice->GetTransform(D3DTS_VIEW, &matView);
hr = m_pDevice->GetTransform(D3DTS_PROJECTION, &matProj);
hr = pShaderEffect->SetMatrix("m_mtViw", &matView);
hr = pShaderEffect->SetMatrix("m_mtPrj", &matProj);
//¸ðµ¨ Ãà¼Ò
D3DXMATRIXA16 scaleMat; D3DXMatrixIdentity( &scaleMat ); D3DXMatrixScaling( &scaleMat, 0.4f, 0.4f, 0.4f );
hr = pShaderEffect->SetMatrix("m_mtWld", &scaleMat); // ¿ùµå Çà·Ä ¼³Á¤
hr = pShaderEffect->SetMatrixArray("m_mtBlnd", m_matBlend, MAX_BLEND); // Blending Çà·Ä ¼³Á¤
UINT cPass;
hr = pShaderEffect->Begin( &cPass, 0 );
hr = pShaderEffect->BeginPass( 1 );
hr = m_pDevice->SetVertexDeclaration( Shader::Instance()->GetMeshDecl() );
m_pDevice->DrawIndexedPrimitiveUP( D3DPT_TRIANGLELIST,
0, m_nVertex, m_nTriangle, m_pIndex, D3DFMT_INDEX16, m_pMeshVerts, sizeof(ShaderBlendVertex) );
pShaderEffect->EndPass();
pShaderEffect->End();
m_pDevice->SetVertexDeclaration(NULL);
m_pDevice->SetVertexShader(NULL);
m_pDevice->SetPixelShader(NULL);
m_pDevice->SetSoftwareVertexProcessing(FALSE);
m_pDevice->SetTexture(0, NULL);
return 1;
}