AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D [Ver. 0.4.5.1, 31.12.08]

Ein Thema von igel457 · begonnen am 24. Nov 2006 · letzter Beitrag vom 14. Sep 2011
Antwort Antwort
Seite 52 von 103   « Erste     242505152 535462102     Letzte »    
Benutzerbild von igel457
igel457
Registriert seit: 31. Aug 2005
Andorra 2D

Was ist Andorra 2D?
Nein, Andorra 2D hat nichts mit dem kleinen europäischen Staat "Andorra" zu tun. Wie das "2D" im Namen auch schon erraten lässt, handelt es sich um eine 2D Engine. Diese wird für Delphi und Lazarus (Freepascal) entwickelt und zwar um das bekannte und oft verwendete DelphiX abzulösen (was an DelphiX nicht so toll ist lest ihr am besten hier). Andorra 2D hat einen ähnlichen Aufbau wie DelphiX - das Spriteengineinterface ist sogar zu 99% das Gleiche.

Features
Was ist nun das Besondere an Andorra 2D?
- Hardwarebeschleunigung
- Verwendung von Plugins zur Grafikdarstellung wodurch OpenGL, DirectX oder sogar die GDI mit Andorra 2D verwendet werden können
- Integrierte und beschleunigte Spriteengine
- Integrierte Zoomfunktion in der Spriteengine
- Modularer aufbau von den Loadern für Texturformate, es können einfach eigene Hinzugefügt werden
- orthogonale und perspektivische Projektionsmatrix
- Integration von 3D-Modellen (die Loader sind noch nicht geschrieben)
- Schnelle Partikelsysteme
- Ausnutzung von Multi-Core CPUs
- Lichter
- Shadersupport (Cg und HLSL)
- Einfaches Surface-System
- Einfaches Scenenmanagement
- Videowiedergabe mit MPEG2 Support
- Verwendung von mehreren "Windowframeworks", wodurch Unabhängikeit von der VCL/LCL erreicht wird.
- Clipping/Splitscreens
- 2D Physikengine mit Newton
- Integriertes "Hardware Canvas"
- Mächtiges, voll Skinbares GUI-System
- Nicht überladen - man wird nicht zum benutzen bestimmter Features gezwungen (wie zum Beispiel Datenpackages, wie dies in anderen Engines der Fall ist)
- Opensource, entweder unter der CPL oder der GPL verwendbar
- Mächtiges Bundle von Editoren und Tools
- Deutsche Tutorials
- Viele Demos
- Und natürlich die Banalitäten, die man sich von einer 2D-Engine so wünscht: Rotation, Additives Zeichnen, Skalierung, BitBlt, Texturzugriffe et cetera

Da die Plugins nur um die Basisfunktionalitäten der Grafikschnittstellen Wrapen, könnte man die Plugins theoretisch für eine Hybrid 3D-Engine verwenden

Mehr Infos...
...sowie Tutorials und weitere Links...
gibt es auf der Website: http://andorra.sourceforge.net/
Dort findet ihr auch Demos, Tutorials und Screenshots...

Wenn ihr Fragen, Kritik oder Anregungen habt, dann könnt ihr diese entweder hier oder bei SourceForge posten.

Downloads:
Momentan gibt es die Version 0.4.5. Einen Überblick über alle Downloads gibt es hier.

Das Package mit allen Demos, Prerequisiten und Binaries gibt es in der neusten Version hier:
Andorra 2D All-In-One-Package 23MB

Tutorials:
Die Tutorials gibt es nicht nur auf der Website, sondern auch in der DP. Allerding möchte ich betonen, dass die Tutorials auf meiner Website aktueller sind. Ich kann meine eigenen Tutorials hier nämlich nicht mehr bearbeiten (@Daniel: dringend umändern!). Hier ist eine kleine Liste, wobei die Sterne die Schwierigkeit darstellen:
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 1 - Installieren und Initialisieren
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngAndorra 2D über CVS aktualisieren
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 2 - Das erste Bild
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngTutorial 3 - Die Spriteengine
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngPartikelsysteme
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngDer Canvas
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngDas GUI-System
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pnghttp://andorra.sourceforge.net/img/star2.pngAndorra 2D und Lazarus
http://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star.pnghttp://andorra.sourceforge.net/img/star2.pngÜber Windowframeworks

FAQ:
Eine Sammlung oft gefragter Fragen findet sich hier:
http://andorra.sourceforge.net/index.php?section=FAQ

Wichtig:
Falls ihr ein Programm mit Andorra 2D geschrieben habt/daran schreibt, dann wäre es schön wenn ihr mir Bescheid sagen könnt. Dann bekomme ich nämlich mal einen Überblick, wer die Bibliothek nun überhaupt verwendet und außerdem kann ich auf meiner Website Screenshots von eurem Projekt einfügen und auch auf eine eventuelle Website eures Projektes verlinken.

Über diesen Thread:
Bitte schreibt hier nur Wünsche oder Anregungen herein, die direkt mit der Engine zu tun haben. Wenn ihr eine Frage über die Anwendung in eurer Anwendung habt, dann macht am besten einen eigenen Thread im Multimedia-Teil auf, bei dem ihr "[Andorra 2D]" vor den Titel schreibt.

Danke für euer Interesse,
Andreas
Miniaturansicht angehängter Grafiken
imagelisteditor_692.png   physics2_202.png   extended_spriteengine_868.png   wormhunter_412.png  
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
 
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#511
  Alt 5. Mär 2008, 17:24
Bei uns in der Schule läuft Andorra 2D super mit dem OpenGL-Plugin. Das ist meistens weniger anspruchsvoll in Punkto Grafikkarte.
Andreas
  Mit Zitat antworten Zitat
Looper

 
Delphi XE2 Professional
 
#512
  Alt 5. Mär 2008, 19:38
Dann versuche ich es nächsten Mittwoch nochmal mit dem OpenGL PlugIn. Funktioniert damit jetzt auch der Fullscreen?
  Mit Zitat antworten Zitat
DelphiNub
 
#513
  Alt 11. Mär 2008, 11:33
Moinsen
Erstmal großes Lob an Andreas für seine 2d Engine

Aber.. ich hab da ma n Problemchen:

Ich hab mir eine funktion geschrieben um text mittig auszugeben:

Delphi-Quellcode:
procedure TextOutCentered( AdDraw: TAdDraw; s: string; x, y: integer );
var
  w, h: integer;
begin
  with AdDraw.Canvas do begin
    w:= Font.TextWidth( s );
    h:= Font.TextHeight( s );
    TextOut( x - (w div 2), y - (h div 2), s );
  end;
end;
Nun habe ich das Problem, das TextWidth und TextHeight 0 zurückgeben

Ich benutze Version 0.35 und benutzt werden:
Delphi-Quellcode:
  AdDraw.Fonts.GenerateFont('Verdana',50,[afBold]);
  AdDraw.Fonts.GenerateFont('Arial',24,[]);
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#514
  Alt 11. Mär 2008, 13:46
Hallo,

Danke für das Aufspüren des Fehlers. Dieser befindet sich in der Unit "AdFont" und lässt sich durch austauschen der Methode "TAdFont.CalcTextSizes" durch folgende beheben:
Delphi-Quellcode:
procedure TAdFont.CalcTextSizes(AText:string);
var
  ATextSet:TAdTextSet;
begin
  if (TypeSetter.Changed) or (AText <> FLastText) then
  begin
    TypeSetter.CharSizes := FCharSizes;
    TypeSetter.CharPatterns := FCharPatterns;
    TypeSetter.GenerateLine(0, 0, AText, ATextSet);
    FLastText := AText;
    FLastWidth := TypeSetter.TextWidth;
    FLastHeight := TypeSetter.TextHeight;
  end;
end;
Falls es noch Probleme geben sollte, melde dich einfach.

Noch einmal Danke,
Andreas
Andreas
  Mit Zitat antworten Zitat
DelphiNub
 
#515
  Alt 11. Mär 2008, 15:26
Ja sehr schön! Nun funktionierts

Ich hätte da noch was ^^

Also.. Seit 0.35 gibs ja dieses schöne Framework und den EventHandler, ich hatte vor die Events KeyDown und KeyUp zu verwenden, wenn ich nun aber diese so erstelle wie sie eigentlich angegeben sind bekomme ich den Fehler: "Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'"

Delphi-Quellcode:
// Zuweisung
AdDraw.Window.Events.OnKeyDown:= KeyDown;

// KeyDown Prozedur (Teil der Klasse der Anwendung)
procedure KeyDown(Sender: TObject; var Key: Word; Shift: TAdShiftState);
Wenn ich die Maus über OnKeyDown halte zeigt mir Delphi "Shift" als "AdWindowFramework.TAdEventHandler.$$" an
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#516
  Alt 11. Mär 2008, 15:30
Hallo,

mach mal das "var" Weg:

TAdKeyEvent = procedure(Sender: TObject; Key: Word; Shift: TAdShiftState) of object;
Andreas
  Mit Zitat antworten Zitat
DelphiNub
 
#517
  Alt 11. Mär 2008, 15:54


Ok meine Schuld.
Wenn wir schon grad dabei sind, wann empfielt es sich das Canvas.Release auszuführen? Einmal global per Render Durchlauf oder jedesmal wenn man etwas gezeichnet hat?
Weil ich such mir grad nen Ast.. Sobald ich etwas über die TAdImageList zeichne bringt mir irgendwas die Farbe meines Textes durcheinander..

Ich such mal weiter
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#518
  Alt 11. Mär 2008, 16:17
Release solltes du immer nach einer "logischen Zeicheneinheit" aufrufen. Wenn du zum Beispiel ein Haus und einen Baum mit dem Canvas Zeichnest, dann wäre es angebracht "Release" nach dem Zeichnen des Hauses und nach dem Zeichnen des Baumes aufzurufen.

Release macht eigentlich nichts anderes, als die Zeichenoperationen, welche du ausgeführt hast, nun wirklich zu zeichnen.
Andreas
  Mit Zitat antworten Zitat
DelphiNub
 
#519
  Alt 11. Mär 2008, 16:29
Okelidokeli ^^

*blödsinnigen text entfern*

Edit:
Oha! Auf die schnelle ist mir da noch was aufgefallen:

Delphi-Quellcode:
with AdDraw.Canvas do begin
  Pen.Width:= 3;
  MoveTo( 10, 10 );
  LineTo( 50, 10 );
  Pen.Width:= 1;
  Release;
end;
Zeichnet die Linie 1px breit

Delphi-Quellcode:
with AdDraw.Canvas do begin
  Pen.Width:= 3;
  MoveTo( 10, 10 );
  LineTo( 50, 10 );
  Release;
  Pen.Width:= 1;
end;
Zeichnet die Linie wie gewünscht 3px breit

Wäre evtl. eleganter wenn die Linienbreite mit zwischengespeichert werden würde

Edit:
Also das "Problem" mit der Farbe von Text hat sich "erledigt"
Ich hab bisher immer
Delphi-Quellcode:
AdDraw.Canvas.Pen.Color:= Ad_RGB( 255, 255, 255 );
AdDraw.Canvas.TextOut( 10, 10, 'blah' );
verwendet. Allerdings treten hin und wieder Probleme auf (eines davon ist das bei Ad_ARGB der Alpha wert nicht übernommen wird, der text ist dann nicht sichtbar).
Nun verwende ich
Delphi-Quellcode:
AdDraw.Canvas.Font.Color:= Ad_RGB( 255, 255, 255 );
AdDraw.Canvas.Font.TextOut( 10, 10, 'blah' );
Und es wird alles exakt so angezeigt wie es sein soll.

Eventuell hatte ich das falsch verstanden oder ich hab gerade ein Bug gefunden

Mal kurz zu meinem "Projekt":
Ich bastel aus Andorra 2D, FMod und Lua eine Art Sandbox-Engine (Kleine Anlehnung an Garrysmod, falls es jemand kennt).
Die Probleme traten auf als ich ein eigenes GUI erstellt hatte (Startmenü, Konsole, etc).

Ich warte schon sehnlichst darauf das 3D modelle (zB .OBJ) unterstützt werden
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#520
  Alt 13. Mär 2008, 14:08
Hallo,

ich schaue mir das mit der Fontfarbe noch einmal an.

Wenn es noch weitere Probleme mit Andorra 2D gibt, dann weißt du ja, an wen du dich wenden musst . Mache das nächste mal aber besser einen eigenen Thread in der Multimediasparte des Forums auf (du kannst ja einfach "[Andorra 2D]" vor den Threadtitel schreiben), sonst wird dieser Thread zu unübersichtlich (er ist zwar schon unübersichtlich, aber naja...).

Ich arbeite gerade an Multisurfaceunterstüzung. Wer aufmerksam die Roadmap gelesen hat, wird jedoch gemerkt haben, das dieses Feature erst für eine spätere Version geplant war. Der Hintergrund der Implementierung ist jedoch folgender: Ich möchte die pixelgenaue Kollision über den Stencilbuffer Hardwarebeschleunigen, da meine aktuelle Implementation des Pixelchecks noch sehr Fehlerbehaftet und langsam ist (auch wenn ich "Bitmaps" dafür verwende).
Als Abstrahierung für den Stencilbuffer ist mir ein Surfacesystem am intelligentesten vorgekommen. Im Anhang befindet sich ein Screenshot meiner aktuellen Surface Testanwendung (momentan noch ohne Stencilbuffer).

Der Code dafür sieht folgendermaßen aus - einfacher geht es eigentlich nicht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
[...]
      AdSurface := TAdTextureSurface.Create(AdDraw);
      AdSurface.SetSize(256, 256);
[...]
end;

procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
  if AdDraw.CanDraw then
  begin
    AdPerCounter.Calculate;

    AdDraw.ClearSurface(clGreen);
    AdDraw.BeginScene;

    with AdSurface.Canvas do
    begin
      Pen.Style := apNone;
      Brush.Color := Ad_ARGB(255, 128, 0, 64);
      Brush.GradientColor := Ad_ARGB(255, 255, 0, 255);
      Rectangle(0,0,256,256);
      Release;

      AdImage.Draw(AdSurface, 192,192,0);

      Font := AdDraw.Fonts.GenerateFont('Comic Sans MS',10,[],clBlack,255,2,2);

      with TAdSimpleTypeSetter(Font.TypeSetter) do
      begin
        DrawMode := [dtWordWrap, dtMiddle, dtCenter];
      end;

      Font.TextOut(AdRect(0,0,256,256),
        'Dies [...] realisierbar.');
    end;

    with AdDraw.Canvas do
    begin
      Pen.Style := apNone;
      Brush.Texture := AdImage.Texture.Texture;
      Brush.TextureMode := tmTile;
      Rectangle(0,0,ClientWidth,ClientHeight);
      Release;

      TextOut(0,0, 'FPS: '+IntToStr(AdPerCounter.FPS));
    end;

    AdSurface.Image.Draw(AdDraw, mx, my, 0);

    AdDraw.EndScene;
    AdDraw.Flip;
  end;
  Done := false;
end;
Ich hoffe das Feature kann jemand gebrauchen.

Features die bis jetzt für die nächste Version (0.4.0) geplant sind:
- Surfacesystem [fast fertig]
- Neues Renderstatesystem [angefangen]
- Hardwarebeschleunigte 2D-Kollisionskontrolle [0%]
- Neuimplementierung des Partikelsystems (verwendung von Pointsprites und Multithreading) [0%]
- Neuimplementierung des Lichtsystems [0%]

In Version 0.4.5 wird es dann Möglichkeiten zum laden von 3D-Modellen geben.

In Version 0.5.0 kommen dann CG-Shader an die Reihe.

Über Kommentare und andere Featurevorschläge freue ich mich immer (auch wenn es bis jetzt erst wenige gegeben hat),
Andreas
Miniaturansicht angehängter Grafiken
surfaces1_409.png  
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 52 von 103   « Erste     242505152 535462102     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz