Delphi-PRAXiS
Seite 12 von 26   « Erste     2101112 131422     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Andorra 2D [Ver. 0.4.5.1, 31.12.08] (https://www.delphipraxis.net/81314-andorra-2d-%5Bver-0-4-5-1-31-12-08%5D.html)

Codewalker 2. Jan 2008 16:03

Re: Andorra 2D [Ver. 0.30 BETA, 22.11.07]
 
grml, doch das meine ich. Aber ich würde es case-insensitive machen. Also
Delphi-Quellcode:
function TAdComponent.FindComponent(AName: string): TAdComponent;
var
  i:integer;
begin
  if Name = AName then
  begin
    result := self;
  end
 {...}
in
Delphi-Quellcode:
function TAdComponent.FindComponent(AName: string): TAdComponent;
var
  i:integer;
begin
  if Lowercase(Name) = LowerCase(AName) then
  begin
    result := self;
  end
 {...}
ändern.
Ansonsten kann ich nur sagen :wall: - waren die Finger mal wieder schneller als das Hirn :mrgreen:

igel457 4. Jan 2008 14:29

Re: Andorra 2D [Ver. 0.30 BETA, 22.11.07]
 
Andorra 2D 0.30 STABLE

Download:
Version 0.30 STABLE (ZIP): 9,43MB
Version 0.30 STABLE (BZ2): 8,69MB

Ab heute ist Andorra 2D 0.30 STABLE zum Herunterladen verfügbar. Wichtige Änderungen gegebüber der BETA Version:
  • Removed Bug in TAdCanvasQuad.Generate
  • Rewrote TAdCanvasLine.Generate
  • Removed TAdCanvas.BlendMode property. Use Pen.BlendMode and Brush.BlendMode instead.
  • Implemented "TAdPersistent" - a replacement for TPersistent from "Classes".
  • Removed Bug in TAdFont.Generate
  • added TAdBitmapBlur
  • added possibility of creating blured shadows
  • Removed bug in TAdFont.TextWidth/TAdFont.TextHeight -> Sizes are now calculated correctly.
  • Improved particle editor interface.
  • Removed bug in TAdPNGCompressor.Write

Die nächste Version wird 0.35 sein - dann endlich mit Linuxsupport. Dies wird durch verschiedene "TAdWindowFrameworks" ermöglicht. Ein NonVCL-Win32 Framework habe ich schon geschrieben (damit kann man endlich Spiele mit ~100kb Dateigröße erstellen), sowie eine VCL Anbindung. Gerade sitze ich an der OpenGL GLFW Version. Ein leeres OpenGL-Fenster kann ich damit unter Linux schon einmal erzeugen.

Viel Spaß mir der neuen Version,
Andreas

Codewalker 5. Jan 2008 12:10

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Moin zusammen.

Nachdem ich jetzt hier ein virtuelles Dateisystem ausgesucht habe, habe ich begonnen, das ganze für Andorra zu nutzen. Dabei ist mir aufgefallen, dass TAdMouseLibrary noch keine LoadFromStream-Methode hat - wäre für die nächte Version wünschenswert :)

Codewalker 5. Jan 2008 13:22

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
@Igel: Ich bekomme neuerdings beim Beenden der Anwendung einen Speicherfehler. Habe das ganze auf folgende Stelle eingrenzen können:

Delphi-Quellcode:
procedure TAdFontMap.Clear;
var
  i,j:integer;
  p:PAdLinkedList;
  c:PAdMapPair;
begin
  p := Data;
  for i := 0 to Capacity - 1 do
  begin
    p^.StartIteration;
    while not p^.ReachedEnd do
    begin
      c := PAdMapPair(p^.GetCurrent);
      c^.Key.Free;
      Dispose(c); // <<<--- Hier kommt der Speicherfehler
      FCount := FCount - 1;
    end;
    for j := 0 to p^.Count - 1 do
    begin
      p^.Delete(0);
    end;
    inc(p);
  end;
end;
Vielleicht kommst du ja hier weiter - mehr habe ich nicht hinbekommen

igel457 6. Jan 2008 17:22

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

eigentlich kann der Speicherfehler nur auftreten, wenn ein ungültiges Element in der Fontmap vorhanden ist. Das bedeutet vermutlich, dass du irgendwo ein mit TAdFontFactory.GenerateFont generiertes Fontobjekt selbst freigibst. Sollte dies nicht der Fall sein, so brauche ich mehr Informationen.

Im Anhang befindet sich noch ein Vorgeschmack auf die nächste Version...

Codewalker 6. Jan 2008 17:38

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
hm, das Problem ist, dass ich AdFont und AdFontFactory gar nicht genutzt habe. Habe nur über den Canvas mit Textout was ausgegeben. Mit Fonts habe ich bisher nie gezielt gearbeitet.

igel457 6. Jan 2008 18:48

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Das ist wirklich seltsam. Kommt der Fehler noch, wenn du den Textausgabeteil auskommentierst? Gibst du auch wirklich nirgends ein Fontobjekt frei? TAdCanvas.Font wird schließlich auch über TAdDraw.Fonts.GenerateFont erzeugt. Vielleicht gelingt es dir, den Fehler ein bisschen genauer einzugrenzen.

Codewalker 6. Jan 2008 19:00

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Also, der Fehler kommt leider auch, wenn ich die Textausgabe auskommentiere. Habe den gesamten Code nochmal abgesucht und ich erzeuge nichts manuell was mit Fonts zu tun hat. In den Demos kommt der Fehler nicht vor - muss also an irgendetwas von mir liegen. Source ist leider viel zu viel zum Anhängen. Ich werde morgen mal weiterforschen...

igel457 7. Jan 2008 16:15

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang mal noch ein Bild zum Thema "Andorra 2D auf Linux". Ich habe jetzt nämlich (nach langem herumsuchen) Lazarus endlich dazu gebracht auch Bilder zu laden.

Edit: Läuft mit 700FPS

wicht 8. Jan 2008 18:35

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Moin,

erstmal will ich sagen, dass es mich total freut, dass die Linux-Geschichte so gut voran geht, das wollte ich nämlich dann auch mal testen.
Aber eigentlich habe ich nur eine dumme Frage.. folgendes:

Delphi-Quellcode:
constructor TGUIManager.Create(AdDraw: TAdDraw);
begin
  FAdGUI := TAdGUI.Create(AdDraw);
  FAdGUI.Skin.LoadFromFile('Z:\sunna.axs');
end;
Das mache ich in meinem TGameManager wie man sieht und soweit funktioniert das auch. FAdGUI.Free wird auch aufgerufen, allerdings wird irgendwie nicht alles freigegeben (Alles nach Tutorial gebaut). Angeblich wurden 19 mal TMemoryStream nicht freigegeben. Lasse ich das .LoadFromFile weg, bekomme ich diesen Fehler nicht. Habe auch ein bisschen durch-debuggt, aber meiner Meinung nach wird das alles wieder freigegeben.
Benutze die 0.30 STABLE, Fehler war auch mit in der 0.30 BETA, die sunna.axs ist die mitgelieferte.

Kann das irgendjemand irgendwie nachvollziehen oder so? Ich komme da irgendwie nicht weiter so, habe das ReportMemoryLeaksOnShutdown erstmal abgestellt.

Fiel mir gerade noch ein: Nach dem Update auf 0.30 STABLE hat er sich in der AdApps.pas übrigens beschwert, dass TAdPerformanceCounter unbekannt ist. Habe AdPerformanceCounter dann selbst zu den uses geschrieben, dann ging das alles.

Danke für Antworten :)

wicht 8. Jan 2008 18:46

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Mist - ignoriert das bitte. Man sollte schon auf die Reihenfolge aufpassen, wie man was am Ende Freigibt. TAdGUI am besten vor TAdDraw. Das hat mich wirklich viel zeit gekostet.. :mrgreen:

Progman 17. Jan 2008 18:31

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
@Igel457:
Ein Vorschlag für das Speichern der Ini-Datei des Setup-Dialogs:

In der Datei AdSetupDlg.Pas im Constructor von TAdSetup folgende Zeile
Delphi-Quellcode:
FIni := TIniFile.Create(ExtractFilePath(ParamStr(0))+'adsettings.ini');
ersetzen durch
Delphi-Quellcode:
FIni := TIniFile.Create(GetEnvironmentVariable('APPDATA')+'\'+ChangeFileExt(ExtractFileName(ParamStr(0)),'.ini'));
Dann hat die Ini-Datei immer den gleichen Namen wie die EXE, was bei mehreren Andorra-Anwendungen Sinn macht, damit jede Anwendung eigene Einstellungen haben kann. Und sie befindet sich im jeweiligen User-Verzeichnis. Dadurch wird auch das Problem mit mangelnden Schreibrechten gelöst.

Gruß ;)

xXcomputerrookieXx 18. Jan 2008 13:35

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Ich hab mal ne Frage zum 2. Tutorial zu Andorra!

Da geht es ja um die ImageList,in die später die Bilder kommen.
Wenn ich es so wie das Tutorial beschreibt mache,hat er ein Problem mit AdImageList

Delphi-Quellcode:
 AdImageList := TAdImageList.Create(AdDraw);
Für Delphi ist das ein 'Undefinierter Bezeichner' !Ich hab schon überall gesucht,wo ich diese AdImageList finde,ich hab das Tutorial immer wieder gelesen um sicherzustellen nichts übersehen zu haben und auch im Ordner von Andorra2D (das Full Package) habe ich durchsucht.

Wäre nett wenn mir wer auf die Sprünge hilft,denn ich bin gerade etwas verwirrt..

Codewalker 18. Jan 2008 14:37

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Irgendwo musst du ja die Variable anlegen. Zum Beispiel im public-Bereich des Forms:

Delphi-Quellcode:
 type
  TForm1 = class(TForm)
 {...}
  public
   AdImageList: TAdImageList;
  {...}
und natürlich die Unit dafür einbinden (habe gerade nicht im Kopf welche, aber danach kannst du ja suchen)

Progman 18. Jan 2008 15:57

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Die ist in AdDraws definiert, die AdImageList.

igel457 4. Feb 2008 16:52

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Um diesen Thread nicht gänzlich in der Versenkung verschwinden zu lassen, berichte ich einmal darüber, an was ich gerade Arbeite...

Laut Roadmap schreibe ich gerade am Linux-Support. Das ist zwar richtig, allerdings beschreibt es nicht ganz was dafür alles getan werden muss/musste.

Als erstes musste ich natürlich Andorra 2D ein wenig umkrempeln. Um die Erstellung eines Fensters, um das zurückgeben eines Handles (falls das Ausgabefenster schon existiert) oder um die Bereitstellung eines OGL-Contextes kümmert sich nun eine abstrakte Klasse namens "TAdWindowFramework". Außerdem ist dieses für die Ereignisbehandlung zuständig.
Wie oben schon angedeutet gibt es diese "WindowFrameworks" in allen Formen und Farben. Da wären zum Beispiel:
  • TAdVCLWindowFramwork - Ein Windowframework für Windows und Delphi/Lazarus, welches die VCL/LCL zum erzeugen eines Fensters verwendet
  • TAdWin32WindowFramework - Ein Windowframework für Windows und Delphi, welches die pure Win32-API zum erstellen des Fenster verwendet
  • TAdGLFWWindowFramework - Ein crossplatform Windowframework für Delphi/Lazarus, welches die Bibliothek GLFW zum erstellen eines Fensters mit OGL-Context verwendet.
  • TAdVCLComponentWindowFramework - Ein Windowframework für Windows und Delphi/Lazarus, welches das Handle eines existierenden VCL/LCL-Controls zurückgibt. Dieses Framework schafft die Kompatibilität zu den vorherigen Versionen von Andorra 2D
  • TAdOGLContextLCLComponentWindowFramework - Wie oben, erzeugt jedoch auf dem angegeben Control ein Crossplattform OpenGL-Context und ist somit auch unter Linux zu verwenden
Nun kann man sich je nach Geschmack eines (oder auch mehrere) dieser Frameworks aussuchen und einfach in die Uses-Liste aufnehmen. Andorra 2D sucht dann automatisch ein passendes Framework aus. Standardmäßig ist unter Windows das "TAdVCLComponentWindowFramework" und unter Linux das "TAdOGLContextLCLComponentWindowFramework" eingebunden, lassen sich jedoch über einen Kompilierschalter entfernen.

Um das Eventmanagement zu ermöglichen, ist außerdem die Unit "AdEvents" mit Typ- und Konstantendeklarationen hinzugekommen.

Ein weiterer Schritt war das laden von Grafiken unter Linux zu ermöglichen. Dazu musste die Unit "AdLCLFormats" her. Super ist hierbei, das Lazarus bereits PNGs laden kann. Schlecht dabei ist, das unter Linux/GTK dessen Transparenz verloren geht. Deshalb habe ich noch jeweils eine Andorra-Anbindung für "DevIL" und "FreeImage" geschrieben.

Außerdem musste ich auch noch die Unit "JclSimpleXML" unter Lazarus zum laufen bringen, was mir nach ein bisschen Code umkopierer- und löscherrei geglückt ist. Die Unit ist nun als "AdSimpleXML" standardmäßig im "src" Verzeichnis von Andorra 2D vorhanden.

Ich lade gleich mal die aktualisierte Version ins CVS. Theoretisch sollte alles unter Linux laufen, praktisch muss ich das noch überprüfen. Eine Anleitung für das Kompilieren unter Lazarus gibt es dann auch bald.

Jetzt muss ich alles nur noch ein bisschen Testen und noch ein bisschen "schöner" machen.

Kommentare sind wie immer erwünscht,
Andreas

edit:
Diese Demo zeigt, wie man eine Andorra 2D Anwendung schreibt, die ohne Probleme mit Lazarus und Delphi unter Windows und Linux läuft: http://andorra.cvs.sourceforge.net/a.../SimpleNonVCL/

igel457 9. Feb 2008 15:53

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hallo,

ich habe zwei (momentan sehr vorläufige) Tutorials hochgeladen, die über die Verwendung von Andorra 2D unter Lazarus bzw. die neuen Andorra 2D Windowframeworks informieren. Bitte beachten, dass sich die Tutorials auf die aktuelle CVS-Version beziehen.
Andorra 2D und Lazarus
Andorra 2D Windowframeworks

Viel Spaß damit, freue mich auf Rückmeldung,
Andreas

Florian H 15. Feb 2008 12:50

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hm, ich fände ein Update des Image-Editors wünschenswert.. ich vermisste im Moment schwer:
  • eine Drag&Drop-Verschiebe-Funktion in der Image-Liste, die auch mehrere markierte Einträge auf einmal verschiebt
  • Standardname für neu hinzugefügte Bilder (statt "noname"): Der Dateiname
  • Funktion ala "Bilder aktuallsieren", welche alle Bilder nochmals neu in die ImageList läd (d.h. die Pfade zu den Originalbildern müssen natürlich gespeichert werden

Weil so ist die Arbeit doch noch sehr mühseelig, wenn man viele verschiedene Bilder hat und die irgendwie in eine Ordnung bekommen will - und wenn man die Bilder ändert, hat man den ganzen Ärger nochmal :S

grüßle
flo

edit: Achso, gibts irgendwo ne genaue Beschreibung, was man ändern muss, um möglichst einfach ein Prokekt mit AdFont aus V0.20 zu V0.30 zu konvertieren? Kriege nämlich immer nur doofe Exceptions und weiß nicht ob ich da jetzt diese FontGeneratoren brauche und welchen davon etc....

elundril 15. Feb 2008 14:27

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
unter welcher Lizenz wird Andorra2D veröffentlicht?

lg elundril

igel457 15. Feb 2008 15:05

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hallo.

Danke für die Ratschläge den ImageListEditor betreffend. Ich werde dies bei der nächsten Überarbeitung berücksichtigen.
Kannst du mir vielleicht ein Codebeispiel schicken bei dem du eine Exception bekommst. Man musste eigentlich nicht sonderlich viel ändern. Die Standardfontgeneratoren werden automatisch eingebunden, wenn man dies nicht über einen Compilerschalter verhindert.

Zu der Lizenzfrage:
Code:
Andorra 2D
----------

This program is licensed under the Common Public License (CPL) Version 1.0
You should have recieved a copy of the license with this file.
If not, see [url]http://www.opensource.org/licenses/cpl1.0.txt[/url] for more information.

Inspite of the incompatibility between the Common Public License (CPL) and the GNU General Public License (GPL) you're allowed to use this program under the GPL.
You also should have recieved a copy of this license with this file.
If not, see [url]http://www.gnu.org/licenses/gpl.txt[/url] for more information.
Danke für die Interesse,
Andreas

Florian H 15. Feb 2008 19:34

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Naja, ich musste z.B. folgende Zeile auskommentieren, da ich keine äquivalente Eigenschaft finden konnte:
Delphi-Quellcode:
AdFont1.XXX('Arial',[],10,true,2,2,120); //Erzeugt den Font mit Schatten, 2px von der Schrift entfernt und in Stufe drei "geblurt" mit einem Alpha-Wert von 128.
Das XXX nur, weil ich das wohl rausgelöscht habe was davor da stand beim Testen -.- Aber da es ja dein Codeschnippel ist, wirst du wissen was ich meine :D
Aber das kann ja nicht gutgehen.. denke ich mal ^^ Fehlt irgendwie sowas wie ne Fonttextur..was auch in der Exception erahnbar wird. Nur.. wie mach ich das, dass es so ist wie oben?

Machen tu ich damit dann eigentlich nur das:
Delphi-Quellcode:
adfont1.Color := ad_RGB(0,0,0);
AdFont1.TextOut(25, 578, inttostr(1234));
Grüßle
flo

igel457 15. Feb 2008 19:40

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Du musst den Font nun mittels:
Delphi-Quellcode:
AdFont1 := AdDraw.Fonts.GenerateFont('Arial',12,[], etc.);
erzeugen. Dabei werden die Fonts zwischengespeichert, du kannst also getrost auch in deiner Game-Loop
Delphi-Quellcode:
with AdDraw.Fonts.GenerateFont(etc.) do
begin
  Color := Ad_ARGB(255, 255, 255, 0);
  TextOut(0,0,'Test');
end;
schreiben.

Mit dem Canvas funktioniert es einfach so:
Delphi-Quellcode:
with AdDraw.Cavnas do
begin
  Font := AdDraw.Fonts.GenerateFont(etc.);
  Color := Ad_ARGB(255, 255, 255, 0);
  TextOut(0,0,'Test');
end;
Hoffe dir geholfen zu haben,
Andreas

Florian H 15. Feb 2008 21:46

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Ich danke dir, das funktioniert :)

Das mit dem ImageEditor eilt jetzt von mir aus auch nicht mehr, habe mir einen Quick&Dirty-Workarround reinprogrammiert :>

Florian H 18. Feb 2008 22:02

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Servus,

gibts eine Möglichkeit, an das Bild in einer TAdImageList zu kommen? Ich möchte/muss gespeicherte Bilder aus so einer Liste in einem normalen TBitmap verwenden können ...

Grüßle,
flo

igel457 19. Feb 2008 13:14

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Klar:
Delphi-Quellcode:
AdImageList.Items[i].Texture.SaveToGraphic(bmp);
oder so ähnlich...

chaosben 19. Feb 2008 14:27

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hi Andreas!

Sorry, falls ich jetzt eine Frage stelle die du vielleicht schon 100mal beantwortet hast.
Kann ich A2D auch mit einer OpenGL ES Implementation (z.B. die Vincent Mobile 3D Rendering Library) nutzen?

igel457 19. Feb 2008 15:14

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hm... Gute Frage.

Leider kenne ich mich damit nicht so gut aus - theoretisch spricht aber nichts dagegen. Im Notfall kannst du ja immernoch das OpenGL-Plugin einfach entsprechend abändern.

Edit:
Ich verwende momentan den dglOpenGL - Header. Ich weiß nicht, inwiefern der das unterstützt.

chaosben 19. Feb 2008 16:33

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Naja, die "OpenGL ES" - Definition stellt so eine Art "Essenz" von OpenGL dar. Es ist im Prinzip ein abgespeckte Variante von OpenGL - einige Funktionen fehlen einfach.

Na mal sehen, ich probier es mal.

btw: Falls das funktionieren sollte, kann A2D auch auf PDA's/Smartphones und Konsorten laufen. :)

igel457 19. Feb 2008 17:06

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Mich würde das auch interessieren - wäre super wenn das ginge. Wenn du noch fragen dazu hast, dann melde dich einfach bei mir.

chaosben 19. Feb 2008 17:18

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Ich habs jetzt mal schnell überflogen und es sieht so aus, als ob es geht. Ich werd morgen mal versuchen, das Ganze in die Tat umzusetzen. Falls etwas nutzbares rauskommt, sag ich Bescheid. :)

DGL-luke 19. Feb 2008 17:49

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Kommt drauf an, wie tolerant der OpenGL-Header gegenüber den fehlenden Funktionen ist. Extensions werden einfach nicht benutzbar sein, aber wenn Kernfunktionien fehlen, könnte entweder der Header schonmal meckern ODER Andorra wird über n paar nil-pointer stolpern.

igel457 19. Feb 2008 17:59

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Das gute an meinem Plugin-DLL-Konzept ist ja schließlich, dass man für alle beliebigen Renderingsysteme ein neues Plugin schreiben kann. Ist das bisherige OpenGL-Plugin nicht verwendbar, so kann man ja "einfach" ein OpenGL ES Plugin schreiben.

Florian H 19. Feb 2008 18:29

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Zitat:

Zitat von igel457
Klar:
Delphi-Quellcode:
AdImageList.Items[i].Texture.SaveToGraphic(bmp);
oder so ähnlich...

Wenn ich das so mache kommt bei mir ein leeres Bitmap raus .. ohne Bild, Abmessungen etc... :S

igel457 19. Feb 2008 19:55

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hm, habe das gerade nochmal ausprobiert und es funktioniert bei mir ohne Probleme:
Delphi-Quellcode:
AdImageList1 := TAdImageList.Create(AdDraw);
with AdImageList1.Add('logo') do
begin
  Texture.LoadGraphicFromFile('icon64.png');
end;
AdImageList1.Restore;

bmp := TBitmap.Create;
AdImageList1[0].Texture.SaveToGraphic(bmp);
bmp.SaveToFile('C:\test.bmp');
bmp.Free;
Wenn dann müsste der Fehler in der Klasse TAdVCLFormat aus der Unit "AdVCLFormats" liegen. Du kannst höchstens mal versuchen, die neue Version davon zu verwenden, allerdings sollte das nicht viel bringen:
http://andorra.cvs.sourceforge.net/*...s?revision=1.2

Vielleicht kannst du ja mal ein wenig Debugen (TAdVCLFormat.Assign ist dabei wichtig).

Danke für den Hinweis, ich hoffe wir finden den Fehler,
Andreas

chaosben 20. Feb 2008 05:07

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Zitat:

Zitat von igel457
Das gute an meinem Plugin-DLL-Konzept ist ja schließlich, dass man für alle beliebigen Renderingsysteme ein neues Plugin schreiben kann. Ist das bisherige OpenGL-Plugin nicht verwendbar, so kann man ja "einfach" ein OpenGL ES Plugin schreiben.

Genau! Das war auch meine Absicht. Nur muss ich dazu erstmal wieder in die OpenGL-Materie finden.

edit:
Hmmm ich merke, das ich nicht wirklich OGL-fähig bin. :)

Ich hab als Grundlage dein OpenGL-Plugin genommen. Da gibts in der TOGLMesh.Draw Prozedur folgenden Code:
Delphi-Quellcode:
if FIndices = nil then
      begin
        glBegin(mode);
        for i := 0 to high(FVertices) do
        begin
          with FVertices[i] do
          begin
            glTexCoord2f(Texture.x,Texture.y);
            glColor4f(Color.r / 255, Color.g / 255, Color.b / 255, Color.a / 255);
            glVertex3f(Position.x,Position.y,Position.z);
          end;
        end;
        glEnd;
      end
      else
      begin
   glEnableClientState(GL_COLOR_ARRAY);
        glEnableClientState(GL_NORMAL_ARRAY);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
        glEnableClientState(GL_VERTEX_ARRAY);

        glColorPointer(4,GL_UNSIGNED_BYTE,0,@FColors[0]);
        glTexCoordPointer(2,GL_FLOAT,0,@FTexCoords[0]);
        glNormalPointer(GL_FLOAT,0,@FNormals[0]);
        glVertexPointer(3,GL_FLOAT,0,@FPositions[0]);

        glDrawElements(mode,high(FIndices)+1,GL_UNSIGNED_SHORT,@FIndices[0]);

   glDisableClientState(GL_COLOR_ARRAY);
        glDisableClientState(GL_NORMAL_ARRAY);
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        glDisableClientState(GL_VERTEX_ARRAY);
      end;
Könnte man das nicht irgendwie zusammenschmeißen, das immer der Code aus dem else-Zweig genutzt wird? Das wäre mir ganz recht, weil alle diese Funktionen (aus dem Else-Teil) Teil von OpenGL ES sind.
Wäre schön wenn du mir einen Tip geben könntest.

igel457 20. Feb 2008 16:20

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Hallo,
der IF-Zweig wird ja dann ausgeführt wenn kein Indexbuffer vorhanden ist. Das bedeutet, das die Indizierung der Vertices direkt von der Grafikkarte übernommen wird. Wenn diese Funktionalität von der OpenGL ES Definition her nicht gegeben ist, so musst du wohl oder übel vor dem Zeichnen selbst einen Array mit den Indexdaten, abhängig vom Parameter "DrawMode" erstellen.
Wie du die Indices je nach "DrawMode" verteilen musst, ist zum Beispiel hier beschrieben.
Außerdem wäre es natürlich sinnvoll den generierten Indexarray zwischenzuspeichern und nur bei einer Änderung der DrawModes oder der Vertexdaten neu zu erstellen.

Edit:
Moment... Da du ja auch bei glDrawElements den "DrawMode" einstellen kannst, sollte es eigentlich genügen, einen neuen Indexarray der die Zahlen 0..n-1 (n für Anzahl der Vertices) enthält erstellst.

chaosben 21. Feb 2008 07:23

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Danke, werd ich ausprobieren.

//edit:

Leider komme ich nicht weiter, weil es in FreePascal kein TBitmap gibt ... jedefalls nicht ohne LCL. Also muss ich wohl noch ein wenig warten.
Das OLGES-Plugin ist übrigens nun kompilierbar. Ob es auch funktioniert, weiß ich nicht. :-D

mimi 21. Feb 2008 16:17

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Zitat:

jedefalls nicht ohne LCL. Also muss ich wohl noch ein wenig warten.
und was ist daran so schlimm ? die LCL zu nehmen ?

igel457 21. Feb 2008 16:46

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
In Andorra 2D existiert keinerlei Abhängigkeit zu TBitmap! Die LCL/VCL Grafikplugins sind (um es dem Normalbenutzer zu erleichtern) nur standardmäßig eingebunden und können über den Compilerschalter "DO_NOT_INCLUDE_STD_FORMATS" deaktiviert werden. Weitere Abhängigkeiten werden über "DO_NOT_INCLUDE_STD_WINDOWMGR" eliminiert werden.

Edit: Allerdings nur in der Aktuellen CVS-Version (also 0.3.5) . Version 0.3 ist in keinster weise Plattformunabhängig. Wie du an die CVS-Version kommst, dazu findest du von Codewalker ein Tutorial hier in der DP.

chaosben 22. Feb 2008 07:14

Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
 
Nun denn ... das ist ein Ansage mit der ich weiterkomme. Ich hatte schon drüber nachgedacht, weil du geschrieben hast, das du an einer FPC Variante arbeitest. Aber bis zum CVS bin ich nicht gekommen. :)

Btw: Was hälts du von einem Umstieg auf SVN? Wir haben selbst 2 SVN-Server am Laufen (einer auf Arbeit [Windows] und einer für TUO [Linux]) und es ist einfach perfekt. Aber ist nur so ein Gedanke.

//edit:
Falls jemand das Howto / Tutorial fürs CVS sucht: Hier ist es.

//edit:
So, jetzt steh ich wieder vor dem Problem von gestern: Die Unit AdStandardFontGenerator.pas benötigt Grpahics und daraus wiederum TBitmap als Objekt. Beides bietet die arm-wince Umgebung von FPC nicht an (jedenfall nicht standardmäßig).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 12 von 26   « Erste     2101112 131422     Letzte »    

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