![]() |
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.
|
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.
|
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Zitat:
|
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:
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:
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; ![]() 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 |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Zitat:
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:
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.
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; Wäre schön wenn du mir einen Tip geben könntest. |
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 ![]() 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. |
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 |
Re: Andorra 2D [Ver. 0.30 STABLE, 04.01.08]
Zitat:
|
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. |
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: ![]() //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. |
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