Autor Beitrag
Builder
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 07.09.05 18:58 
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:

ausblenden volle Höhe Delphi-Quelltext
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
  //Alles löschen
  pD3DDevice.Clear( 0, nil, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0, 0 );
  //Scene starten
  pD3DDevice.BeginScene;
  //Scene rendern

  Camera.UpdateCamera;
  Camera.UseCamera;
  //Objekte rendern
  for i:=0 to Pred(ObjectCount) do Objects[i].Render;

  //Scene beenden
  pD3DDevice.EndScene;
  //Das geränderte Bild anzeigen
  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
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 08.09.05 07:57 
Hallo!

Kann es sein, daß pUpdating die ganze Zeit True ist?

BTW: Wieso setzt du die World- und Projektionsmatrix in der Routine UpdateCamera? Die Worldmatrix verändert die zu rendernden Objekte und wird meist für andere Objekte wieder neu gesetzt. Die Projektionsmatrix bestimmt "Linsen-Eigenschaften" der Kamera, die müsstest du nicht jedes Mal neu setzen.

Cu,
Udontknow
Builder Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 08.09.05 11:04 
Titel: Ich weis
Nein, die variable ist immer false. Im Debugermodus werden die Zeilen auch ordnungsgemäs abgearbeitet, nur passieren tut nicht's!

Das mit den Linsen und Word ist mir klar, das war der letzte verzweifelte
Versuch es hinzukriegen -> ales win in DX Tutorial zu machen, hat aber nicht
geklappt!!!!
Builder Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 08.09.05 15:46 
Titel: Hat sich erledigt
Danke für die Hilfe, ich hab's endlich gefunden, es war mein fehler (das falsche Object) :oops: