![]() |
Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Ich habe eine ganze Menge Objekte entworfen, mit denen man DirectX nutzen kann, ohne Tonnen von Code schreiben zu müssen.
![]() |
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
Eher ein OpenSource-Projekt, als ein Code-Library-Eintrag. |
Re: Leichter Zugriff auf DirectX durch Kapselung
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:
(ich habe einfach ein beispiel von dir genommen und es verändert *G*)
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; 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 !!! |
Re: Re: Leichter Zugriff auf DirectX durch Kapselung
Hallo und Danke für Dein Lob.
Zu Deinen Bemerkungen: HilfeDatei Zur Zeit vervollständige ich die englische Hilfe, so etwas raubt unheimlich Zeit und hat nur begrenzten Spaßfaktor. Eine englische Hilfe trifft ein größeres Publikum habe ich mir so gesagt... Position Du benutzt ein TxorDXRect. Das ist ein n x m - Gitter (in Deinem Fall 2x2), dessen Knoten entlang eines a x b - Rechtecks gleichmäßig positioniert werden. Die Knoten-Positionen werden automatisch berechnet, hier (0,0)(a,0)(0,b)(a,b). Du hast aber volle Kontrolle über Eigenschaften eines jeden Knotens mittels der Vertex-property:
Delphi-Quellcode:
Die PxorDXVertexClassic-Konvertierung ist notwendig, da Knoten auch andere Formate haben können. Bearbeitest Du sowieso alle Positionen manuell, kannst Du auch eine TxorDXMap, also ein n x m - Gitter, benutzen. Details siehe mitgeliefertes Beispiel Polygon.exe und Crash Course (in der Hilfe). (Eventuell neue
//u = 0..n-1 v=0..m-1
PxorDXVertexClassic(Rect.Vertex[u,v])^ := GetVertexClassic(-0.5,0,-0.3, 0,0,0, clBlack,0); //Pos x,y,z; Normal nx,ny,nz; VertexColor, VertexAlpha ![]() Rotation Rotationen finden stets um die globalen Szenen-Achsen statt. Du solltest daher 1. eventuell mit Rect.MoveCenter(True) den Schwerpunkt des Objektes in den Szenen-Nullpunkt verschieben 2. Rect.Rotate... das Objekt drehen 3. dann erst verschieben (s. Beispiel Polygon.exe) Alternativ kann man auch mit RotateAxis die Drehachse direkt angeben. DrawStart Jedes Objekt besteht aus Primitives (entweder Dreiecke oder Linien bzw. Punkte). Ein n x m - TxorDXRect besteht aus (n-1)*(m-1) Vierecken und jedes Viereck aus 2 Dreiecken. Dein 2x2-Rect besteht demzufolge aus genau 2 Dreiecken. Mit DrawStart (klassisch 0) kann man angeben, ab welchem dieser Primitives der Rendervorgang begonnen wird, bei dir also 0 oder 1. (s.a. Polygon.exe und VertexAndIndex.exe) AlphaBlending Mit der Alpha-Property hast Du jedem Knoten einen Alpha-Wert zugewiesen, sehr gut. Um AlphaBlending zu benutzen musst Du noch ein TxorDXAlphaBlending erzeugen und einen Blend-Effekt (z.B. BlendSrcAlpha) + Activate aufrufen. Oder einfach nur ein TxorDXTransparency und Activate. (s.a. Beispiel AlphaBlending.exe) Camera Nun, die Kamera braucht noch ein anschließendes Activate, um Änderungen an ihr zu realisieren. Ein Move oder Rotate bei Kameras hat jedoch keinen Einfluss auf die Vektoren LookAt, Direction, Position und Up. Besser ist es MoveTo, MoveHoriz, MoveVert, RotateHoriz etc zu benutzen (i.a. mit Parameter xorDXCamHuman oder xorDXCamID), da sich diese Änderungen auch auf die Vektoren auswirken. (s.a. Beispiel Demo.exe) PS Wand1 und Wand2 wieder freigeben! Anbei geänderter Code als Attachment Viel Erfolg, xor alias schmorbraten Neuer Code:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin //creation Scene := TxorDXScene.Create(Handle); Camera := TxorDXCamera.Create(Scene); Rect := TxorDXRect.Create(Scene, 2, 2, 2, 2); //set standard coordinates and colors Rect.MonoAlpha(0.7); 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 links Wand1.Color[0,0]:=clBlue; // links Unten Wand1.MonoAlpha(0.7); Wand2:= TxorDXRect.Create(Scene,2,2,2,2); Wand2.Color[1,0]:=clWhite; // rechts Unten Wand2.Color[1,1]:=clBlack; // rechts oben Wand2.Color[0,1]:=clYellow; // Oben links Wand2.Color[0,0]:=clBlue; // links Unten Wand2.MonoAlpha(0.7); AlphaBlending := TxorDXAlphaBlending.Create(Scene); AlphaBlending.BlendSrcAlpha; Scene.CreateBuffers; //start Camera.SetStandard; Camera.Activate; Scene.BackgroundColor:=clBlue; Scene.SetAmbientLight(255,125,255,250); //Anmerkung: statt hellem Hintergrundlicht vielleicht ein TxorDXDirectionalLight einsetzen Scene.LightsOn:=True; Scene.StartLooping(Draw); Scene.Move(-1,1,1); Scene.RotateY(-10); end; procedure TForm1.FormDestroy(Sender: TObject); begin //free in inverted order of creation FreeAndNil(AlphaBlending); FreeAndNil(Wand2); FreeAndNil(Wand1); 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; //Achtung: AlphaBlending funktioniert von hinten nach vorne, //also das aktuelle Objekt ist nur transparent zu zuvor eingefügten Objekten!!!! AlphaBlending.Activate; //wand2 ist zu 30% transparent da scralpha=wand2alpha=0.7; Wand2.UndoTransformation; Wand2.Insert; Wand2.MoveCenter(True); //Schwerpunkt nach 000 verschieben //Wand2.RotateZ(0.3); //feste rotation da undotransformation nach jedem draw Wand2.RotateZ(RotationsPerSecond(0.3)); //bei jedem draw wird um einen größeren winkel gedreht (0.3 umdrehungen pro sec) Wand2.Move(1.9,0,0); //erst nach dem drehen verschieben Wand2.Draw; AlphaBlending.Deactivate; Camera.MoveHoriz(0.007, xorDXCamID); //camera wird bei jedem draw etwas verschoben Camera.Activate; end; initialization xorDXThrowAllOtherExceptions := True; xorDXThrowCameraTransformationExceptions := False; xorDXThrowIndexSizeException := True; xorDXThrowCapsException := True; InitRotationPerSecond; end. |
Re: Leichter Zugriff auf DirectX durch Kapselung
danke, werde ich gleich mal testen !!!
|
Re: Leichter Zugriff auf DirectX durch Kapselung
wie würdes du mehre objekte verwalten ?
ich habe mir dafür immer ein record erzeugt und bentutz ! |
Re: Re: Leichter Zugriff auf DirectX durch Kapselung
Nun, so allgemein würde ich die Frage mit dem Delphi-Objekt TObjectList beantworten. Ob es für Spieleprogrammierer sinnvollere Strukturen gibt, weiss ich nicht, da kenn ich mich nicht aus.
Gruss xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
Hallo,
als erstes mal ein gaaaanz großes Lob von mir :) nun meine Frage: wird es irgendwelche Tutorials geben die z.B. erklären wie ich Landschaften und ähnliches mit Hilfe deiner Unit erschaffen kann? Oder bin ich jetzt falsch... ich hab nämlich nicht viel Ahnung von DirectX... |
Re: Re: Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 2)
Nun, also für Anfänger in Sachen DirectX empfehle ich gerne SelfDXD auf
![]() Ob meine Unit zum Spiele-Programmieren geeignet ist, kann ich so nicht sagen, da ich nicht aus dieser Ecke komme. Für den Anfang sollte es zumindest reichen und Dir eine Menge Arbeit ersparen. Zumindest gibt es ein Objekt TxorDXIndexedPolygon, welches 3D-Punkte speichert und Dreiecke aus diesen Punkten zeichnet. Ebenso ein Objekt TxorDXTexture zum Laden von Texturen. Das Mappen von Texturen auf Polygons ist in der Hilfe erklärt (Thema Blending und VertexFormat: TxorDXVertexTexture). Habe mal so im Schnellverfahren ein kleines Beispiel "Map" programmiert. Mit einem Untergrund und Psycho-Pitty. Siehe Anhang. Viel Erfolg. xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
Ich verstehe aber nicht warum du die Interfaces, eg. COM Objecte in Delphi Objecte kapselst. Somit muß ein Programmierer wierderum selber darauf achten das einmal allozierte Objecte auch manuell freigegeben werden. Cleverer wäre es gewesen direkt die Interfaces/COM Objecte zu benutzen, da dann das delphi-integrierte referncecounting greift und somit der Programmierer sich nicht mehr um die Allokation und Freigabe der Objecte kümmern müsste. Kurz geagt: meiner Meinung nach wird durch die Kapselung der DirectX COM-Interfaces in Delphi Objecte der Vorteil des DirectX wieder zunichte gemacht.
Gruß Hagen |
Re:Re: Leichter Zugriff auf DirectX durch Kapselung
Hallo,
ich habe mich an ![]() Nun, das Thema COM-Objekte ist für mich noch etwas gräulich, ich hoffe, Dich nicht falsch verstanden zu haben - andernfalls meld Dich nochmal. Es gibt bestimmt noch einiges zu verbessern. Den Vorteil von DirectX sehe ich (durch erzwungen manuelles Freigeben) nicht gleich zunichte gemacht, den der besteht doch hauptsächlich aus der Hardware-Zugriffsgeschwindigkeit, was durch eine Kapselung doch nicht wirklich beeinträchtigt wird, oder? Viele Grüße xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 2)
ich wollte ein einfaches programm machen ein bahn die du von oben siehst und eine kugel drauf die sich begt, dabei ist mir folgendes aufgefallen(ersteinmal)
sobalt ich die z position veränder(also nach vorne oder nach hinten gehen möchte) wird auch auto. x und y veränedert folgende qullcode habe ich dafür geschrieben:
Delphi-Quellcode:
und dann möchte ich noch genre das sich die kugel nach hinten bewegt und die kamera soll folgen in einen konstanten abstandt naja ich habe daüfr folgenden code in der Draw procedure geschrieben:
//creation
Scene := TxorDXScene.Create(Handle); Camera := TxorDXCamera.Create(Scene); Rect := TxorDXRect.Create(Scene, 100, 100, 100, 2); //set standard coordinates and colors Ball := TxorDXBall.Create(Scene, 60, 30, 0.4); //set standard coordinates and colors Ball.MonoChrom(clRed); Ball.Move(33,-22.8,-52); Rect.RotateX(180); Rect.RotateY(0.9); Rect.RotateZ(-0.6); Scene.SetBackgroundColor(0,0,0,0); Scene.AutoLightOnOff:=True; Scene.CreateBuffers; //start // lingx/rechts; nähre dran weiter weg, Camera.Move(32.5,-26,-50); Camera.SetStandard; Camera.Activate; Scene.StartLooping(Draw); //loop drawing routine
Delphi-Quellcode:
im anhang gibt die exe und ein bild
Scene.Clear;
Rect.Insert; Rect.Draw; Ball.Insert; Ball.Move(0,0,0.1); Ball.Draw; |
Re: Leichter Zugriff auf DirectX durch Kapselung
Hi,
das ist ja mal spitzenmäßg :thumb: . Das ist echt viel einfacher und cooler als DelphiX. Ich hab mir das jetzt gerade mal angesehen und bin echt erstaunt, wie man mit wenig Code schon was kleines Animieren kann. (Rotate halt :mrgreen: ). Eine Frage hab ich trotzdem. Wie kann ich eine Kollision überprüfen? |
Re: Leichter Zugriff auf DirectX durch Kapselung
Zitat:
|
Re: Leichter Zugriff auf DirectX durch Kapselung
Hi Mimi,
habe leider zu wenig Zeit, um im Moment der Sache auf den Grund zu gehen. Wäre auch gut, wenn man Deinen Source downloaden könnte. Mir sind so ein paar Kleinigkeiten aufgefallen: 1. Vertausche diese beiden Zeilen, SetStandard könnte den Move beeinflussen.
Delphi-Quellcode:
2. Eine Camera hat einen Positions- und einen Richtungsvektor. Benutze statt Move lieber MoveHoriz(d, xorDXCamId) oder dergleichen, so wirkt sich Dein Move auch auf diese Vektoren aus. Ein einfaches Move wirkt sich nur auf die Transformationsmatrix aus, was bei normalen Objekten auch ausreicht. Vereinfacht unterscheide ich immer Camera und Kameramann. MoveHoriz wirkt sich auf beide aus, Move nur auf die Kamera. Analog RotateY und RotateHoriz. Ein RotateY macht Sinn, wenn der Kameramann die Kamera die ganze Zeit verdreht halten soll, ich den Kameramann aber davon unabhängig "ganz normal" navigieren will.
Camera.Move(32.5,-26,-50);
Camera.SetStandard; 3. Ansonsten fällt mir auf, dass Du die Camera nach rechts unten hinten verschiebst, aber weiterhin auf den Nullpunkt (LookAt-Vektor) schaust, also nach oben links vorne. Die Kugel verschiebst Du jetzt (nur) nach vorn und genau das sieht man doch auch in Deinem Programm oder? Soll sich die Kugel in Blickrichtung wegbewegen, so verschiebe die Kugel in Richtung der Kamera, also etwas derart:
Delphi-Quellcode:
Hi Spider,
TxorDXVector v := Camera.Direction;
Ball.Move(v.x * 0.1, v.y * 0.1, v.z * 0.1); xorDX8 ist konzipiert für die einfache und schnelle Benutzung von DirectX. Kollisionserkennung ist nicht integriert. Kenne mich damit auch nicht richtig aus. Auf die Transformationsmatrizen der Objekte, Kamera und Welt(Scene) kannst Du jedoch zugreifen. Viel Erfolg. Gruß xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
Zitat:
falls du das Projekt mal weiterentwickelst (was ich mir wünschen würde) und vllt. auf DirectX 9 umbaust, könntest du ja die Kollisionserkennung mit einbauen? |
Re: Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 1)
das mit dem ball ist immer noch komisch: ich möchte in nach vorne bewegen, ich habe ihn jetzt mit
Ball.MoveCenter(True); Zum Nullpukt versetzt und schreibe in der onDraw Funktion:
Delphi-Quellcode:
das mit dem v hatte ich getestet da saht man den ball nicht mehr.... und jetzt geht er nach hinten unten standt nach vorne.
begin
Scene.Clear; Rect.Insert; Rect.Draw; Ball.Insert; Ball.Move(0,0,1); Ball.Draw; ich möchte den ball nur nach vorne begen. das beste währe wenn die camra im Konstant abstad zum obj gerichtet werden könnte z.b. die kamar sieht alles von oben und sobalt sich das obj bewegt soll sich die kamra auch bewegen. ich werde auch zwischndurch mal wegen der collisions erkennung suchen, da gibt es bestimmt eine menge im internet. Schreibst du die komponenten samlungn noch weiter ? wenn ja könntes du noch einige vereinfachungen machen: Karama auf obj halten(wie bei GLScne) und eine procedure die ein obejtk nur nach vorne nach hinten nach lings nach rechts nach unten und nach oben verschieben kann und nicht: wenn ich nur z ändenre gehe ich davon aus, das ich das obj nach vorne(+1) oder nach hinten(-1) verschiebe ist das richtig ? warum wird es nach unten geschoben ? hier mal der gesammte qullcode(im anhang) |
Re: Leichter Zugriff auf DirectX durch Kapselung
Hi Spider,
bist herzlich eingeladen, mitzuhelfen ;-) Werde es auf die Todo-Lsite nehmen, wird aber so schnell nicht werden. Hi Mimi, werde mir bei Gelegenheit den Source mal angucken, allerdings wird dies wohl einige Zeit benötigen. Ansonsten sei noch gesagt, dass Du auch die Kamera moven musst, wenn der Abstand zum Objekt gleich bleiben soll. Mitunter macht es auch Sinn, Objekt und Kamera unbewegt zu lassen und statt dessen alle anderen Objekte entgegengesetzt zu bewegen. Um nicht mit vorne, hinten usw. durcheinander zu kommen, empfehle ich die Kamera auf Position 0,0,-50 zu setzen und Blick auf 0,0,0. Viele Grüße Schmorbraten alias xor alias Sven |
Re: Leichter Zugriff auf DirectX durch Kapselung
Zitat:
danke, aber ich hab keinen Schimmer von DirectX. Falls Du ICQ hast, kannst du mich ja mal kontaktitieren, vllt. könnte ich ja was kleineres helfen. Falls Du kein ICQ hast, dann halt per PN |
Re: Leichter Zugriff auf DirectX durch Kapselung
eins verstehe ich noch nicht so genau:
Blickpos ? Kamrapos ? ist das nicht ein und das selbe ? Wenn ich die Kamra bewege ändert sich doch auch die blick richtung oder etwa nicht ? |
Re: Leichter Zugriff auf DirectX durch Kapselung
Zitat:
|
Re: Leichter Zugriff auf DirectX durch Kapselung
Ja genau, es gibt die KameraPosition und die KameraBlickrichtung (Direction). Position + Direction = LookAt. Zusätzlich gibt es noch den Up-Vektor, der sagt wo oben ist (wenn man z.B. kopfüber hängt, zeigt der nach unten).
Achtung: 1. Wie oben aufgeführt muss man in xorDX8 noch zwischen Kamera und Kameramann unterscheiden. Position etc beziehen sich auf den Kameramann und sollten mit MoveHoriz, -vert, -forward, RotateHoriz, -vert, -around, MoveTo, SetPosition, SetDirection etc gesteuert werden. Benutzt man stattdessen Move, Rotate etc bezieht sich dies lediglich auf das Verhältnis zwischen Kameramann und Kamera, was normalerweise unnötig ist. Direction etc bleiben dabei unangetastet. Das macht nur Sinn, wenn ich den Kameramann wie Kamera dirigieren will, aber er die Kamera permanent verdreht halten soll oder dergleichen... (Man kann somit die gleichen Befehle auf zwei Kameras loslassen, wobei die eine aber nach hinten und die andere nach vorne guckt. Glaub ich jedenfalls.) 2. Ein weiterer Punkt ist inwiefern ich MoveHoriz ausführen will, d.h. soll die Horizontale Bewegung parallel zur Koordinaten-XY-Ebene passieren (xorDXcamID), oder möchte ich mich horizontal zur in der (geneigten) Blickebene bewegen (camHuman, Bsp. man läuft auf einer schrägen Wand, dann heißt horizontal parallel zur Wand, nicht zum Erdboden), oder heißt horizontal senkrecht zum Up-Vektor der Kamera.... Diesen Parameter kann man bei MoveHoriz übergeben. xorDXcamHuman spiegelt menschliches Verhalten wieder. 3. Der Unterschied zu FreeCam. Bei der FreeCam wird der UpVektor mit gedreht. So kann ein Flugzeug ein Looping fliegen. Eine normale Kamera, deren UpVektor kerzengrade nach oben zeigt, kann nie ganz direkt nach unten/oben gucken und so auch keine Loopings. xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
ich möchte letzendlich nur folgendes:
ich habe eine Kugel und eine Panel und die gugel ist ganz hinten am null punk und wie schaffe ich es jetzt das die kamra 1. auf die kugel gerichtet ist und zwar in einen Konstanten abstand und wenn ich das obj nach vorne schiebe muss die karama ja nach hinten gehen. Wie schaffe ich das ? |
Re: Leichter Zugriff auf DirectX durch Kapselung
falls ihr nen gescheites paper zu kollision sucht,
![]() |
Re: Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Mimi,
habe das in ![]() Im wesentlichen sieht der Source so aus:
Delphi-Quellcode:
Viele Grüße
//repeated drawing routine
procedure TForm1.Draw(Sender: TObject); const MoveZ: Single = 0.01; begin Scene.Clear; GetKeyboard(MoveZ); //Move Ball and Camera forward/backward Ball.Move(0, 0, MoveZ); Camera.MoveForward(MoveZ, xorDXCamHuman); Camera.Activate; Grid.Insert; Grid.Draw; DrawMultiMaps; Ball.Insert; Ball.Draw; end; xor alias Schmorbraten |
Re: Leichter Zugriff auf DirectX durch Kapselung
als ich das Projekt complirt habe(dein beispiel) ist das Komplete windows abgestürzt.... daher werde ich dieses projekt lieber nicht mehr Testen*schade*
fürher lief das beispiel auf mein Rechner jetzt nicht mehr.... woran ist liegt weiß ich leider nicht da ich nicht windows neu installieren möchte..... evlt. kannst du ja diesen "kleinen" bug finden und fixen *G* |
Re: Leichter Zugriff auf DirectX durch Kapselung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Mimi,
also zwischen Windows abstürzen und neu installieren müssen gibts einen kleinen Unterschied. Ein bischen Forscherarbeit solltest Du da schon reinstecken, also mal debuggen bis zur abstürzenden Stelle wäre nicht schlecht. Immerhin habe ich gestern dafür auch ein paar Abendstündchen geopfert. (Vielleicht auch den Bowling-Ordner löschen vorm Entpacken des neuen Bowling-Beispiels?) Zudem lief das Projekt bei mir, ich kann Deinen Fehler also nur schwer buggen. Ansonsten: Benutzt Du DirectX8 o.besser? Welches Delphi hast Du? Welches Windows? Viele Grüße xor |
Re: Leichter Zugriff auf DirectX durch Kapselung
ich nutze
Delphi7 habe WinXp home und habe DX9.0 ich hatte ja schon füher mit deine libg rumgespielt. und da ist mir einbefehl aufgefallen der windows zum abstürzen bringt. nagut ich werde es einmal riskieren das xp abstürzt.... weil bis ich den rechner dann soweit wieder habe dauert das leider seine zeit.... |
Re: Leichter Zugriff auf DirectX durch Kapselung
der 2.Versuch schlug fehl: ich habe alle anweisungen in der create procedure mit einem haltepunkt versehen und den draw modus auskometiert, ergbnis: delphi hat sich aufgehangen und das komplete windows auch.
eine möglichkeit habe ich noch: hinter und vor jeder anweisung eine log funktion zu schreiben so sehre ich nach dem absturzt wenigens wie weit er gekommen ist und kann dir dann die anweisung nennen *G* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz