void TerrainMipMapLevel::Draw() { //Get the various matrices D3DXMATRIX matWorld, matView, matProj; m_screenPtr->D3DDevice->GetTransform( D3DTS_WORLD, &matWorld ); m_screenPtr->D3DDevice->GetTransform( D3DTS_PROJECTION, &matProj ); m_screenPtr->D3DDevice->GetTransform( D3DTS_VIEW, &matView ); //set the combined world/proj/view matrix (for transformations and such) D3DXMATRIX compoundMatrix; D3DXMatrixMultiply(&compoundMatrix, &matWorld, &matView); D3DXMatrixMultiply(&compoundMatrix, &compoundMatrix, &matProj); m_screenPtr->SetVertexShaderConstant(0, &compoundMatrix); //set blend factor D3DXVECTOR4 blendFactor(m_interpolation, 1.0f - m_interpolation, 0.0f, 0.0f); m_screenPtr->SetVertexShaderConstant(9, &blendFactor, 1); m_screenPtr->D3DDevice->SetIndices( m_indexBlock->DeviceBuffer()->GetD3DBufferInterface() ); m_screenPtr->D3DDevice->SetStreamSource( 0, m_vertexBuffer.D3DBuffer(), 0, sizeof( TerrainLODVertex ) ); m_screenPtr->D3DDevice->SetStreamSource( 1, m_targetVertexBuffer.D3DBuffer(), 0, sizeof( TerrainLODVertex ) ); m_screenPtr->D3DDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, m_vertexBuffer.VertexCount(), 0, m_indexBlock->IndexCount()/3 ); m_screenPtr->D3DDevice->SetStreamSource( 0, NULL, 0, 0 ); m_screenPtr->D3DDevice->SetStreamSource( 1, NULL, 0, 0 ); m_screenPtr->PolygonsRendered +=m_indexBlock->IndexCount()/3; m_screenPtr->DrawCalls++; }
//------------------------------------------------------------------------------ SLDouble AnimationBlendTick::getBlendFactor( SLTimeInterval frameTimeDt ) const { if (_dtAnim > 0.0) { if( frameTimeDt <= 0.0 ) { return 0.0f; } else { SLDouble blendFactor( frameTimeDt / _dtAnim ); return MIN(1.0, blendFactor); } } return 0.0f; }