Hallo alle Zusammen.
Ich "quelle" mich hier durch den DirectX und versuche eine einfache Engine zu
schreiben ein Bestandteil dieser Engine ist ein Object TD3DCamera.
Hier mal ein Teil der Implementierung:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| procedure TD3DCamera.UpdateCamera(FLAG : Byte = CAM_COMPLETE); begin if not pUpdating then begin if (FLAG and CAM_VIEW)<>0 then D3DXMatrixLookAtLH( pmatView, pEyePoint, pLookatPt, pUpVec ); if (FLAG and CAM_PROJECTION)<>0 then D3DXMatrixPerspectiveFovLH( pmatProj, pfov, pAspect, pMinDistance, pMaxDistance ); if (FLAG and CAM_WORLD)<>0 then D3DXMatrixRotationY( pmatWorld, Windows.GetTickCount/550.0 ); end; end;
...
procedure TD3DCamera.UseCamera; begin D3DApplication.D3DDevice.SetTransform( D3DTS_WORLD, pmatWorld ); D3DApplication.D3DDevice.SetTransform( D3DTS_VIEW, pmatView ); D3DApplication.D3DDevice.SetTransform( D3DTS_PROJECTION, pmatProj ); end;
...
function TD3DApp.Render: HResult; var i : Integer; begin pD3DDevice.Clear( 0, nil, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0, 0 ); pD3DDevice.BeginScene; Camera.UpdateCamera; Camera.UseCamera; for i:=0 to Pred(ObjectCount) do Objects[i].Render;
pD3DDevice.EndScene; pD3DDevice.Present( nil, nil, NULL, nil ); result:=S_OK; end; |
Als Object dient ein Dreieck. Theoretisch sollte er dank der Testzeile
(Wordtransform) sich drehen. Tut er aber nicht!!!!!!!!!
Wer kann mir helfen?
Verwende Delphi 2005 und die DirectX9 Units von JEDI
Danke im Voraus