Delphi-PRAXiS
Seite 48 von 103   « Erste     38464748 49505898     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)

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 08:00 Uhr.
Seite 48 von 103   « Erste     38464748 49505898     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