![]() |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Ich habe mal ein kleines Script gebastelt: Ab sofort gibts
![]() |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Hi,
Hab gerade ein kleines Problem.... Hab ein mini-Andorra Programm geschrieben. Also nur um was zu testen. Bei mir gehts wunderbar... Aber bei anderen gehts nicht. Da schlägt AdDraw.Initialize; fehl. Allerdings auch nicht immer... Code sieht so aus:
Delphi-Quellcode:
Jemand ne Ahnung was das sein soll? Hab die aktuellste Version von Andorra.
AdDraw := TAdDraw.Create(Panel1);
AdDraw.DllName := 'AndorraDX93D.dll'; if not AdDraw.Initialize then ShowMessage('Hat nicht geklappt'); |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Naja, klingt ja so, als ob die AndorraDX93D.dll oder die d3dx9_31.dll nicht mitgeliefert wurde? :gruebel:
|
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Wollte ich eigentlich hinschreiben: Habe alle DLLs mitgeliefert.. die von DX9 und die AndorraDX dll.
|
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Das Problem hatte ich auch einmal (also an einem anderen Pc als an meinem).
Nachdem ich dann aber die aktuelle DirectX Version mit allen Updates (gibts ![]() Was aber ärgerlich ist: Das Update ist so um die 85 MB groß. MFG Benjamin |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Eigentlich darf die benötigte d3d9_33.dll nicht mitgeliefert werden - das steht wohl so in der Microsoft Eula. Stattdessen müssen Anwendungen den DirectX-Endbenutzer-Installer mitliefern. Es gibt auch einen DirectX Webinstaller, der lädt die noch nicht vorhandenen DirectX-Versionen aus dem Web herunter.
Außerdem ist diese DLL auf den meisten Systemen sowieso schon installiert. Und mal ehrlich - jeder Entwickler sollte in der Lage sein, das SDK herunter zu laden. Ich möchte eben nur nicht gegen die Microsoft-Richtlinen verstoßen. |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Ich habe gerade mal geschaut, ist das echt normal, dass ich mit DirectX um die 400FPS für eine relativ simple Szene schaffe, mit OpenGL aber nur 60FPS? :shock:
Sobald es komplexer wird (deutlich mehr zu zeichnende Elemente) geht OpenGL leicht nach unten auf ~40FPS, DirextX bricht dann regelrecht ein und kommt nur noch auf ungefähr 60FPS. So krasse Performance-Unterschiede? Ist ja eigentlich schade, weil OpenGL dann für aufwändigere Sachen rausfällt :/ |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Zitat:
MfG xZise |
Particle System fucked up?
Hi,
Erstmal ein großes Lob für die Engine - es macht wirklich viel Spass damit zu arbeiten. Ich wollte gerade ein paar Partikel in mein Programm einbauen. Das klappte ganz gut, bis ich, wie im Particle-Tutorial beschrieben, im Partikeleditor ein DefaultParticle erstellt und geladen habe: Der Particleeditor hat scheinbar bei jedem öffnenden XML-Befehl den letzten Buchstaben abgehackt (z.B. <particleclas > statt <particleclass >). Naja machts nichts, die habe ich dann angehangen. Dann hat er ohne Fehler die Datei geladen. Aber dann hatte sich nichts verändert. Ich hatte eigentlich ein paar Farben eingestellt und die Bewegung verändert, aber es bringt nichts, die Partikel sind immer noch weiß und bewegen sich wie immer. Folgenden Code benutze ich:
Delphi-Quellcode:
Und zum Emittieren (aus einer Routine einer Spriteklasse):
PartSys := TAdParticleSystem.Create(AdDraw);
PartSys.Texture := AdImageList.Find('particle').Texture; PartSys.DefaultParticle.LoadFromFile('textures\part.axp');
Delphi-Quellcode:
Ich wusste nicht weiter, also dachte ich, ich verändere das DefaultParticle mal manuell, ohne eine Datei zu laden. Aber die Eigenschaft LifeTime gibt es gar nicht :?:
PartSys.Emit(3, round(self.X), round(self.Y));
Vielleicht kann mir ja jemand weiterhelfen. Ich benutzte Andorra2D Version 4.5. Danke schonmal, Roman |
Re: Andorra 2D [Ver. 0.45, 24.12.08]
Also ich hatte Anfangs auch Probleme damit, hab das aber dann so gelößt:
Zuerst mal die Klasse:
Delphi-Quellcode:
Das Laden:
TPartSys = class(TAdParticleSystem)
private FEmissionTime: Double; FGap: Double; FX: Double; FY: Double; procedure SetEmissionTime(const Value: Double); procedure SetGap(const Value: Double); procedure SetX(const Value: Double); procedure SetY(const Value: Double); public procedure EmitParticles; property Gap: Double read FGap write SetGap; property EmissionTime: Double read FEmissionTime write SetEmissionTime; //= Lifetime property X: Double read FX write SetX; property Y: Double read FY write SetY; end;
Delphi-Quellcode:
Damit das mit der LifeTime auch geht (gibts nämlich nicht), hab ich das so gemacht (ist aus dem Editor rauskopiert :stupid: ):
PartSys := TPartSys.Create(AdDraw);
with PartSys do begin Texture := ImageList.Find('particle_target').Texture; LoadFromFile(MyPath+'target.axp'); end;
Delphi-Quellcode:
Du musst nur in der Idle-Prozedur "PartSys.EmitParticles" aufrufen, und es müsste gehen.
procedure TPartSys.EmitParticles;
Gap := Gap + CPUCounter.TimeGap; //CPUCounter: TAdPerformanceCounter if Gap > EmissionTime then begin Emit(Round(Gap / EmissionTime), Round(X), Round(Y)); Gap := Gap - EmissionTime * Round(Gap / EmissionTime); end; Draw(AdDraw, 0, 0); end; MFG Benjamin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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