Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Leichter Zugriff auf DirectX durch Kapselung

  Alt 18. Sep 2004, 18:07
ich habe die kapslung getestet und muss sagen: nicht schlecht, die ist nicht vergleichbar mit delphiX viel einfacher und kann zugleich auch mehr(auch wenn ich noch nicht alles verstanden habe)

aber was mir aufgefallen ist:

wenn du ein objekt erstl und eine andere position haben möchtes must du sie immer verschieben mit move habe ich gemacht und als ich das objekt drehen wollte um die Z achse hat sich die position immer verändern und es hat eine kreis bahn um die andre objekte gezogen, mein qullcode sieht so aus:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  xorDXThrowAllOtherExceptions := True;
  xorDXThrowCameraTransformationExceptions := False;
  xorDXThrowIndexSizeException := True;
  xorDXThrowCapsException := True;
  //creation
  Scene := TxorDXScene.Create(Handle);
  Camera := TxorDXCamera.Create(Scene);
  Rect := TxorDXRect.Create(Scene, 2, 2, 2, 2); //set standard coordinates and colors

  Wand1:= TxorDXRect.Create(Scene,2,2,2,2);
  Wand1.Color[1,0]:=clWhite; // rechts Unten
  Wand1.Color[1,1]:=clBlack; // rechts oben
  Wand1.Color[0,1]:=clYellow; // Oben Lings
  Wand1.Color[0,0]:=clBlue; // Lings Unten

  Wand2:= TxorDXRect.Create(Scene,2,2,2,2);
  Wand2.SetStandard;
  Wand2.Move(1.9,0,0);
  Wand2.FixTransformation;

  Wand2.Color[1,0]:=clWhite; // rechts Unten
  Wand2.Color[1,1]:=clBlack; // rechts oben
  Wand2.Color[0,1]:=clYellow; // Oben Lings
  Wand2.Color[0,0]:=clBlue; // Lings Unten

  Scene.CreateBuffers;
  //start
  Camera.SetStandard;
  Camera.Activate;
  Scene.BackgroundColor:=clBlue;
  Scene.SetAmbientLight(255,125,255,250);


  Scene.LightsOn:=True;
  Scene.OnDraw := Draw; //set draw routine
  Scene.StartLooping;
  Scene.Move(-1,1,1);
  Scene.RotateY(-10);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  //free in inverted order of creation
  FreeAndNil(Rect);
  FreeAndNil(Camera);
  FreeAndNil(Scene);
end;

//repeated drawing routine
procedure TForm1.Draw(Sender: TObject);
begin
  Scene.Clear;

  Rect.Insert;
  Rect.RotateZ(-0.10);
  Rect.Draw;


  Wand1.Insert;
  //Wand1.RotateX(-0.01);
  Wand1.Draw;

  Wand2.UndoTransformation;
  Wand2.Insert;

  Wand2.RotateZ(0.10);
  Wand2.Draw;

// Camera.Move(1,1,4);
end;
(ich habe einfach ein beispiel von dir genommen und es verändert *G*)

und ich hatt einen system absturzt bzw. mein loptop ging auf einmal aus als ich DrawStart mit 10 gesetzt hatte

eine deutsche hilfe währe nicht schlecht, weil sonst müste ich immer den qullcode durcharbeiten von dir...


und das mit den Alpha geht bei mir nicht ich habe es genauso gemacht wie mit den farben nur halt Alpha davor geschrieben und das objekt war nicht durchsichtig, warum nicht ???


kann man die camaer an ein objekt binden ??? bzw. die position verändern weil ich dort move aufgerufen habe passierte leider nichts

aber mach auf jedenfall weiter !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat