Hey,
I've experienced some strange shader behavior due to placement of SetMatrix in my code. I was hoping someone could explain to me why this was.
When my render code was like this:
for each object obj..
..
matWorldViewProj = m_worldMatrix * m_viewMatrix * m_projMatrix;
m_pRenderEffect->SetTechnique( m_pTechnique );
UINT nPasses;
m_pRenderEffect->Begin( &nPasses, 0 );
for( UINT i = 0; i < nPasses; i++ )
{
m_pRenderEffect->BeginPass( i );
m_pRenderEffect->SetMatrix( "matWorldViewProj", &matWorldViewProj );
render( obj );
m_pRenderEffect->EndPass( );
}
m_pRenderEffect->End( );
..
It freaked out, i was unable to control the camera but instead was able to move objects around in a strange way by trying to move the camera
However, when my render code was like this:
for each object obj..
..
matWorldViewProj = m_worldMatrix * m_viewMatrix * m_projMatrix;
m_pRenderEffect->SetTechnique( m_pTechnique );
m_pRenderEffect->SetMatrix( "matWorldViewProj", &matWorldViewProj );
UINT nPasses;
m_pRenderEffect->Begin( &nPasses, 0 );
for( UINT i = 0; i < nPasses; i++ )
{
m_pRenderEffect->BeginPass( i );
render( obj );
m_pRenderEffect->EndPass( );
}
m_pRenderEffect->End( );
..
Everything worked fine, the camera moved correctly and objects behaved as they should. Why is there a difference where i put
m_pRenderEffect->SetMatrix( "matWorldViewProj", &matWorldViewProj );
?