Beispiel #1
0
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;
	}