Andorra 2D Graphics Lib

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Andorra 2D Graphics Lib

Beitrag von bembulak »

Hallo Leute!

Nachdem in diesem Thread von der Spiele-, bzw. Grafikprogrammierung die Rede war, und dabei auch Andorra genannt wurde, dachte ich mir, ich geb der Lib ne Chance. Also, Quellen geholt und erst mal versucht, selber die DLL zu kompilieren. Das hat nach einigen anfänglichen Problemen nun auch funktioniert und ich bin stolzer "Besitzer" einer "AndorraLazOGL.dll". Wer meine Lazarusquellen (mit den passenden Projekteinstellungen), oder die DLL haben möchte, soll mich doch bitte kontaktieren.

So, nun aber wieder zu meiner Frage. So wie es aussieht, habe ich alles, um die ersten Beispiele der Homepage zu probieren.
Also habe ich ein neues Projekt erstellt, der Code in Unit "main" sieht so aus:

Code: Alles auswählen

unit main;
 
{$MODE DELPHI}
 
interface
 
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
  AdDraws, AdClasses, AdTypes;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure     FormDestroy(Sender: TObject);
    procedure FormCreate();
    procedure Idle(Sender: TObject; var Done:boolean);
 
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraLazOGL.dll';
  Application.OnIdle := @Idle;
  AdDraw.Initialize;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdDraw.Free;
end;
 
procedure TForm1.Idle(Sender: TObject; var Done:boolean);
begin
  AdDraw.ClearSurface(0);
  AdDraw.BeginScene;
  with AdDraw.Canvas do
  begin
    Font := AdDraw.Fonts.GenerateFont('Arial', 24, []);
    TextOut(0,0,'Andorra 2D...');
    Font := AdDraw.Fonts.GenerateFont('Arial', 10, []);
    TextOut(0,30,'...works with Lazarus too');
  end;
  AdDraw.EndScene;
  AdDraw.Flip;
end;
 
 
initialization
  {$I main.lrs}
 
end.

Zugegeben, einfach von der Andorra-HP abgetippt.

Wenn ich das ganze jetzt kompilieren möchte, erhalte ich allerdings folgende Fehlermeldung:
Hint: Start of reading config file c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.cfg
Hint: End of reading config file c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.cfg
Warning: You are using the obsolete switch -OG
Free Pascal Compiler version 2.2.0 [2007/11/14] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Win32 for i386
Compiling adtest.lpr
Compiling main.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdDraws.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdCanvas.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(389,64) Error: Incompatible type for arg no. 3: Got "Double", expected "LongInt"
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdTypes.pas(198,10) Hint: Found declaration: AdRect(LongInt, LongInt, LongInt, LongInt):
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(393,47) Error: Incompatible type for arg no. 3: Got "Double", expected "LongInt"
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdTypes.pas(198,10) Hint: Found declaration: AdRect(LongInt, LongInt, LongInt, LongInt):
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(397,60) Error: Incompatible type for arg no. 3: Got "Double", expected "LongInt"
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdTypes.pas(198,10) Hint: Found declaration: AdRect(LongInt, LongInt, LongInt, LongInt):
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(418,36) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(425,37) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(433,35) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(440,38) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(553,59) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(553,81) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(554,60) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(554,82) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(555,59) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(555,84) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(556,60) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(556,85) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(659,51) Hint: Local variable "ATextSet" does not seem to be initialized
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(685) Fatal: There were 3 errors compiling module, stopping

Im Prinzip ist mir sehr wohl klar, was der Compiler von mir will, ich weiß nur nicht wie ich es ihm geben kann.

Ausserdem verstehe ich nicht ganz, wie bei einem Demo-Code so was sein kann. Immerhin tritt der Fehler ja nicht in meinem Code auf, sondern in AdFont.pas, einer Unit aus der Andorra-Lib.

Ich wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen könnte. Danke.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Andorra 2D Graphics Lib

Beitrag von Euklid »

bembulak hat geschrieben:Im Prinzip ist mir sehr wohl klar, was der Compiler von mir will, ich weiß nur nicht wie ich es ihm geben kann.


Double ist glaube ein reeler Zahlentyp, er verlangt offenbar einen Integer-Typ. Hast du mal die Funktionen

trunc();
round();
ceil();

, teilweise befindlich in der unit math, probiert?

Gruß, Euklid

pierredrks
Beiträge: 34
Registriert: Do 4. Okt 2007, 18:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Braunfels

Beitrag von pierredrks »

Hallo,
du solltest vielleicht hier einmal nachsehen/nachfragen. Dort treibt sich der Entwickler von Andorra rum.

Und ich meine das Zeile 35

Code: Alles auswählen

Application.OnIdle := Idle;

lauten müsste, wenn du den Delphi-Mode an hast.

Gruß
Pierre
Das Herz besitzt Gründe, die die Vernunft nicht kennt.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Hallo!

So, ich hatte da was übersehen. Somit ist mein obiger Post nämlich auch hinfällig. Ich Hirni hatte da in den Units dumm herumgespielt, was ich nicht hätte tun sollen.

Ich habe jetzt alle Units wieder in ihren usprünglichen Zustand gebracht. Demnach ist die Funktion AdRect() aus der Unit AdTypes überladen.

Code: Alles auswählen

function AdRect(X1,Y1,X2,Y2:LongInt):TAdRect;overload;
function AdRect(X1,Y1,X2,Y2:single):TAdRect;overload;
function AdRect(X1,Y1,X2,Y2:double):TAdRect;overload;


Diese Funktion wird von der Unit AdFont aus aufgerufen.
So wäre der "Auslieferzustand" von Andorra. Leider hat das folgende Auswirkungen

Code: Alles auswählen

Hint: Start of reading config file c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.cfg
Hint: End of reading config file c:\lazarus\fpc\2.2.0\bin\i386-win32\fpc.cfg
Warning: You are using the obsolete switch -OG
Free Pascal Compiler version 2.2.0 [2007/11/14] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Win32 for i386
Compiling adtest.lpr
Compiling main.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdDraws.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdCanvas.pas
Compiling D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(337,21) Error: Can't determine which overloaded function to call
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdTypes.pas(222,10) Hint: Found declaration: AdRect(Double, Double, Double, Double):<record type>
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdTypes.pas(211,10) Hint: Found declaration: AdRect(Single, Single, Single, Single):<record type>
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(418,36) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(425,37) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(433,35) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(440,38) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(553,59) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(553,81) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(554,60) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(554,82) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(555,59) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(555,84) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(556,60) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(556,85) Hint: use DIV instead to get an integer result
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(659,51) Hint: Local variable "ATextSet" does not seem to be initialized
D:\_CODING\_FPC\_SETUP\Andorra\ad2d_30_STABLE_all\src\AdFont.pas(685) Fatal: There were 1 errors compiling module, stopping


Aha. FPC ist sich also nicht sicher, welche der beiden Funktionen er nehmen soll. Wiederum: ich weiß, was er möchte, kann es aber nicht beeinflussen.
Herrje.

Danke für den Tip mit dem Forum. Ich scheu zwar davor zurück, mich in zu vielen Foren anzumelden, aber vlt. ist das meine einzige Möglichkeit.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Hast dus mal im Delphi compatibility Mode probiert ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Danke für den Tip. Habe ich gerade versucht, trotzdem die gleiche Fehlermeldung. :/

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Der Entwickler von Andorra nennt sich Igel und ist z.b. unter
http://www.delphipraxis.net/forum_main.html
sehr oft anzutreffen. Du musst einige Units austauschen und brauchst eine Externe Grafik Lib. und du musst eine bestimmte Einstellung machen in deinen Projekten. Ich meine du musst OpenGL als abhänigkeit hinzufügen unter dem Projekt Inspektor.
Damit meine ich openglcontroll.
Hasst du dir die Tutorials angesehen auf seiner Seite ?
Einst ist dabei das handelt über Lazarus und Andorra.

Die meisten Beispiele müssen angepasst werden, weil einige Units noch nicht an Linux angepasst sind. So wie ich das mitbekommen habe. Verfolgt doch mal diese Thread hier:
http://www.delphipraxis.net/topic97168,0.html
(Bitte alle seiten durchlesen*G*)
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Bitte alle seiten durchlesen*G*

Bitte alle Posts durchlesen. ^^
pierredrks hat geschrieben:Hallo,
du solltest vielleicht hier einmal nachsehen/nachfragen. Dort treibt sich der Entwickler von Andorra rum.

me hat geschrieben:Danke für den Tip mit dem Forum. Ich scheu zwar davor zurück, mich in zu vielen Foren anzumelden, aber vlt. ist das meine einzige Möglichkeit.


Also: ich habe die Anweisungen GENAU befolgt. Und ich habe, wie dem Thread zu entnehmen ist, nicht das Problem, dass mir Units fehlen, oder so, sondern dass ich Probleme mit einer überladenen Funktion habe.
Und der Code ist der MINIMUM-Code, von der Andorra-Homepage, damit es überhaupt läuft - also der Democode _für_ Lazarus! (http://andorra.sourceforge.net/index.php?bb=lazarus1ger)

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Unter Linux habe ich ihn zum laufen gebracht.
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Pfff.

So, nach einigem hin und her habe ich alles nochmal gemacht. :evil:

Fest steht: ich hatte mit der Version 3.0 gearbeitet, warum auch immer, ich weiß es nicht. :shock:

Ich habe jetzt alle Pakete nochmal von der Homepage heruntergezogen und die DLL mit 3.5 kompiliert.
Nun bekomme ich das NonVCL.lpi Projekt zum Laufen. Mal sehen, wie es weiter geht.

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Viel Glück dabei. Ich habe nach einiger Zeit aufgeben. Weil man sich noch zu viel von hier und da suchen muss. Evlt. habe ich es auch Falsch verstanden. Das währe auch möglich.

Mit der Engine wurden aber schon einige tolle Spiele geschrieben. Mein Favoritt ist immer noch DrawBall *G*
MFG
Michael Springwald

pierredrks
Beiträge: 34
Registriert: Do 4. Okt 2007, 18:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Braunfels

Beitrag von pierredrks »

Ja die Dokumentation ist gerade für Linux noch nicht wirklich ausgereift.
Aber es wird.

@bembulak
Der Entwickler ist auch unter http://www.delphigl.com zu finden, falls du angemeldet bist. Ansonsten kann ich dir das DP-Forum empfehlen, da dort mehr Leute sind die mit Andorra 2D arbeiten.
Das Herz besitzt Gründe, die die Vernunft nicht kennt.

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

stimmt delphigl.com habe ich vergessen zu erwähnen. Naja hast du ja nachgeholt.

Andorra wurde eigentlich für Windows entwickelt und für DirectX aber ich meine schon sehr früh wurde das Plugin System eingebaut. Und für die Unterstützung von Lazarus wurden sogar recht viele Klassen erstellt z.b. so ein WindowFrameWort.

Evlt. werde ich mich damit auch noch mal befassen.

@pierredrks Kennst du dich mit Andorra aus ?

Ich finde es intressant in wie vielen Foren Andorra jetzt bekannt ist. Am meisten in der DP.
Bisher. Sogar hier findet es schon Anhänger....
MFG
Michael Springwald

pierredrks
Beiträge: 34
Registriert: Do 4. Okt 2007, 18:35
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Braunfels

Beitrag von pierredrks »

Auskennen ist denke ich zuviel gesagt.
Ich bin dabei mich ein wenig einzuarbeiten. Habe derzeit aber sämtliche Projekte pausiert, da ich momentan einiges für die Uni machen muss.

Gruß
Pierre
Das Herz besitzt Gründe, die die Vernunft nicht kennt.

igel457
Beiträge: 3
Registriert: Mo 7. Jan 2008, 13:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: 32Bit

Beitrag von igel457 »

Hallo,

bin auf einen Hinweis von Pluto auf diese Diskussion hier hingewiesen worden. Also wenn es noch irgendeine Frage bezüglich Andorra 2D gibt - hier bin ich.

Mit Version 0.3.5 sollte Andorra 2D wirklich ohne Probleme unter Lazarus laufen, vom Erfolg haben mir schon mehrere berichtet - Anscheinend tut es das ja auch. ;-)

Momentan gibt es leider noch ein paar kleinere Probleme mit Andorra 2D und Lazarus, auf die mich andere Hingewiesen haben - zum Beispiel funktionieren die Window Events nicht, sobald Andorra 2D auf einem Panel erstellt wird. Aber diese Fehler sollten mit Version 0.4 (die "relativ" bald erscheinen wird) der Vergangenheit angehören.

Die Dokumentation verbessere ich auch gerade eben, man darf also gespannt sein.

Auf Feedback sowie Verbesserungsvorschläge freue ich mich immer,
Andreas

Antworten