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 48 von 103   « Erste     38464748 49505898     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 DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#471
  Alt 19. Feb 2008, 17:49
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.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#472
  Alt 19. Feb 2008, 17:59
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.
Andreas
  Mit Zitat antworten Zitat
Florian H

 
Delphi 6 Professional
 
#473
  Alt 19. Feb 2008, 18:29
Zitat von igel457:
Klar:
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
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#474
  Alt 19. Feb 2008, 19:55
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#475
  Alt 20. Feb 2008, 05:07
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.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#476
  Alt 20. Feb 2008, 16:20
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.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#477
  Alt 21. Feb 2008, 07:23
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.
Benjamin Schwarze
  Mit Zitat antworten Zitat
mimi

 
FreePascal / Lazarus
 
#478
  Alt 21. Feb 2008, 16:17
Zitat:
jedefalls nicht ohne LCL. Also muss ich wohl noch ein wenig warten.
und was ist daran so schlimm ? die LCL zu nehmen ?
Michael Springwald
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#479
  Alt 21. Feb 2008, 16:46
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.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#480
  Alt 22. Feb 2008, 07:14
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).
Benjamin Schwarze
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 48 von 103   « Erste     38464748 49505898     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 21:13 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