D3DXMatrixLookAtLH - Fehler!
-
Warum ist das OK ???...
{ D3DXMATRIX WorldViewMatrix; m_lpD3DDevice->SetTransform( D3DTS_VIEW, D3DXMatrixLookAtLH( &WorldViewMatrix, &m_Position, &( m_Position + m_LookAt ), &D3DXVECTOR3( 0.0f, 1.0f, 0.0f ))); }
und das nicht ???
{ m_lpD3DDevice->SetTransform( D3DTS_VIEW, D3DXMatrixLookAtLH( NULL, &m_Position, &( m_Position + m_LookAt ), &D3DXVECTOR3( 0.0f, 1.0f, 0.0f ))); }
Ich brauch WorldViewMatrix sowieso nicht mehr!
-
The return value for this function is the same value returned in the pOut parameter.
pOut = Null -> Rückgabewert = NULL -> Sichtmatrix = NULL ->
-
[quote="interpreter"]The return value for this function is the same value returned in the pOut parameter.
pOut = Null -> Rückgabewert = NULL -> Sichtmatrix = NULL ->[/quote]
das ergebnis wird in die matrix gepackt, zu der ein zeiger übergeben wird und im zweifelsfall wird die funktion einfach zusätzlich eine referenz darauf zurückgeben, weils bequemer ist. so klingt jedenfalls die beschreibung, die funktion liefert aber anscheinend einen zeiger zurück. damit wäre die erklärung von ms jedoch blödsinn und der rückgabewert ist schlicht pOut und eben NICHT das objekt hinter pOut.
pOut = NULL -> schreibversuch über nullzeiger -> abkacken
alternativ prüft die funktion vorher den zeiger und macht bei NULL eben einfach mal gar nichts.warum ist das zweite nicht ok? weil die funktion aus performancegründen wohl darauf verzichtet, intern eine matrix anzulegen und die tödlich umständlich am ende noch für die rückgabe zu kopieren. das widerspräche aber der vermutung, daß der zeiger geprüft wird, sonst könnte die funktion bei null einfach selbst eine matrix anlegen. if anweisungen will man aber nunmal gerne vermeiden, wenn es schnell gehen soll.