Hi, proge auf FPC und auch schon was länger mit OpenGL und SDL rum. Da ich aber für evtl. Projekte in der Zukunft dann doch ein bissel mehr machen will, dacht ich mir, ich krempel mal alles um.
Zu meinen Fragen:
1. Was für Texturloader könnt ihr mir empfehlen, die recht umfangreich Dateiformate lesen bzw. schreiben können? Welche benutzt ihr? Möchte mal mehr als nur png, jpeg oder bitmap verwenden. (targa, directX texturformate und mehr...)
2. Für das Fensterhandling möchte ich auch was anderes benutzen, um auch den Style individueller anpassen zu können. GTK(1+2+3), Qt4 oder ähnliches. Was ist "besser"? GLUT ist ja auch nicht mehr das wahre...
3. Gibt es eine Möglichkeit beliebig vom Fenstermodus in den Vollbildmodus, während der Laufzeit, zu wechseln? Wenn ja, wie? Über die WinAPI habe ich es bis jetzt nur so geschafft, dass nach 10 mal wechseln eine ERROR Meldung kommt und das Programm automatisch beendet wird, oder, dass OpenGL neu Initialisiert werden müsste. Beim neu Initialisieren müsste ich in der Anwendung dann aber alle Positionen und Variablen, aller Objekte, in einer Externen Datei schreiben und neu lesen. Und das wiederum ist auch nicht das wahre.
Mein OS ist WinXP 32bit version. Sollte alles möglichst Plattformübergreifend und OpenSource sein.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
@TextureLoader: Hast du dir schonmal glBitmap angesehen?
Metadraconis hat geschrieben:
3. Gibt es eine Möglichkeit beliebig vom Fenstermodus in den Vollbildmodus, während der Laufzeit, zu wechseln?
Gibt es auf jeden Fall. Es kommt natürlich darauf an, womit du dein Fenster erstellt hast. Ich erinnere mich, dass sowas in den NeHe-Tutorials eingebaut wurde (falls es die noch gibt), wo die WinAPI verwendet wurde - was natürlich wieder nicht plattformunabhängig ist.
Metadraconis hat geschrieben:
Mein OS ist WinXP 32bit version.
Das solltest du ändern, wenn du mir den Kommentar erlaubst...
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: So Aug 08, 2010 08:37 Beiträge: 460
Programmiersprache: C / C++ / Lua
Ich frage mich, wieso du von SDL weg willst?
Ich spekuliere einfach mal darauf, dass du SDL 1.2 noch verwendest. Nutze lieber das ebenfalls plattformunabhängige SDL 2, Header hab ich geschrieben: (okay Schleichwerbung: https://github.com/ev1313/Pascal-SDL-2-Headers)
@Textureloader: glBitmap ist wirklich eine gute Wahl, SDL_image kann kein DDS (leider)...
@Fensterhandling: du kannst bei SDL dein Fenster randlos anzeigen lassen und einen eigenen "Style" in deiner GUI malen, mit OpenGL. Auch ohne GLUT.
@Vollbild/Fenstermodus wechseln: liegt nicht an SDL wimni. Ich hatte damit bis jetzt keine Probleme...
_________________ offizieller DGL Compliance Beauftragter Never run a changing system! (oder so)
@TextureLoader: Hast du dir schonmal glBitmap angesehen?
Ja habe ich.
unterstütze Formate
Windows Bitmaps (*.bmp) Wird Automatisch auf 24 Bit gesetzt sollte es kleiner sein. JPEG (*.jpg) TARGA (*.tga) komprimiert und unkomprimiert, 24 und 32 Bit. Ursprung unten links oder oben links Portable Network Graphics (*.png) 24 Bit mit oder ohne Alphakanal. Es wird eine zusätzliche Bibliothek benötigt. Direct Draw Surfaces (*.dds) 8,16,24,32 Bit DXT1,DXT3,DXT5, keine Cubemaps, keine Mipmaps
png hat keinen 32 bit mode und DDS keine Mipmaps und Cubemaps. Viel umfangreicher ist die glBitmap damit auch nicht (außer vieleicht mit targa und DDS). Kann mir gut vorstellen das, dass performanter für Delphi ist als mit SDL, aber ich nutze ja FPC.
Falls jemand bereits damit erfolg unter FPC hatte bitte bescheid sagen! Bekomme alles Compilliert. Allerdings ohne Ergebnisse. Vieleicht habe ich ja einen Fehler gemacht beim einbinden der Units...
Das solltest du ändern, wenn du mir den Kommentar erlaubst...
Klar, wenn du mir ein neues OS bezahlst (habe auch Linux parallel am laufen). Abgesehen davon kann ich mir doch meistens sicher sein das wenn was in XP 32bit läuft, dass es auch Aufwärts kompatibel ist. Für Software-Entwicklung unter Windoof sicher besser als alles andere.
end hat geschrieben:
Ich frage mich, wieso du von SDL weg willst?
Ich spekuliere einfach mal darauf, dass du SDL 1.2 noch verwendest. Nutze lieber das ebenfalls plattformunabhängige SDL 2, Header hab ich geschrieben: (okay Schleichwerbung: https://github.com/ev1313/Pascal-SDL-2-Headers)
@Textureloader: glBitmap ist wirklich eine gute Wahl, SDL_image kann kein DDS (leider)...
@Fensterhandling: du kannst bei SDL dein Fenster randlos anzeigen lassen und einen eigenen "Style" in deiner GUI malen, mit OpenGL. Auch ohne GLUT.
@Vollbild/Fenstermodus wechseln: liegt nicht an SDL wimni. Ich hatte damit bis jetzt keine Probleme...
Mhhh...könnte echt am Header liegen. Werd das mal testen wenn ich Zeit hab.
@Fensterhandling: Wenn ich das doch in ein Fenster anzeigen lasse, wie soll ich dann die Auflösung nach belieben verändern?
@SDL: Da Linux GUIs sowieso fast immer über GTK oder QT laufen, wäre das doch aus Performancegründen besser, oder täusche ich mich da?
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2067
Programmiersprache: C++
Wieso brauchst du einen Grafikloader mit vielen Formaten? Das macht nur bei Engines Sinn. Bei deinen eigenen Daten kannst du sie immer ins beste Format konvertieren und den Loader nehmen der dein Format laden kann. Mehr brauchst du doch nicht?
Klar, wenn du mir ein neues OS bezahlst (habe auch Linux parallel am laufen). Abgesehen davon kann ich mir doch meistens sicher sein das wenn was in XP 32bit läuft, dass es auch Aufwärts kompatibel ist. Für Software-Entwicklung unter Windoof sicher besser als alles andere.
Ich nehme mal an, es geht darum, das M$ den Support einstellt.
Zitat:
Falls jemand bereits damit erfolg unter FPC hatte bitte bescheid sagen!
Meine OpenGL-Programme sind auch mit FPC und Lazarus geschrieben, nur laufen diese (momentan) nur Windows;
Zitat:
Was ist "besser"? GLUT ist ja auch nicht mehr das wahre...
Registriert: Mi Nov 30, 2011 21:41 Beiträge: 136 Wohnort: Bad Vilbel
Programmiersprache: Delphi 7
Zitat:
unterstütze Formate
Windows Bitmaps (*.bmp) Wird Automatisch auf 24 Bit gesetzt sollte es kleiner sein. JPEG (*.jpg) TARGA (*.tga) komprimiert und unkomprimiert, 24 und 32 Bit. Ursprung unten links oder oben links Portable Network Graphics (*.png) 24 Bit mit oder ohne Alphakanal. Es wird eine zusätzliche Bibliothek benötigt. Direct Draw Surfaces (*.dds) 8,16,24,32 Bit DXT1,DXT3,DXT5, keine Cubemaps, keine Mipmaps
png hat keinen 32 bit mode und DDS keine Mipmaps und Cubemaps.
wenn du ein 24bit png mit alphakanal hast, dann ergibt das doch ein insgesamt 32-Bit png (24 Farb + 8 Alpha = 32). Oder brauchst du 32-Bit für die Farbwerte, wüsste garnicht das es sowas bei png gibt?!?
Und mipmaps kann dir auch OpenGL oder du dir selbst erzeugen (ist zwar nicht ganz so hübsch, reicht im Normalfall aber auch)
Für Cubemaps verwende ich bei mir, für jede seite jeweils eine komplett eigene Textur, die man ja widerum ganz einfach laden kann.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
für die glBitmap brauchst du nich unbedingt eine extra Lib, du kannst auch die Lazarus internen Klassen nutzen. Das kann man alles im Header einstellen. Das was dir fehlt darfst du gern noch ran programmieren. Die glBitmap wird seit einiger Zeit von der Community gepflegt und umso mehr da ihr Wissen beitragen umso mächtiger wir die Bibliothek am Ende. Das mit den CubeMaps kann ich sogar nachvollziehen, die sind beim Umbau etwas zu kurz gekommen. Das mit den Mipmaps is mir aber unklar, die kannst du auch schnell von der Graka errechnen lassen. So schlecht sind die Karten nich mehr, das man das mit ausliefern müsste. Falls du's jedoch unbedingt brauchst, siehe oben
€: das mit den Bitmaps stimmt auch nicht mehr. Die können jetzt Bitfields und werden nur so groß wie es notwendig ist. Also bei ner 8bit Bitmap werden auch nur 8bpp gespeichert. Hast du dir die glBitmap aus dem git-Repo geladen, oder von Lossy's Homepage? Die überarbeitete Community-Version gibts zur Zeit nur im Repo.
Wieso brauchst du einen Grafikloader mit vielen Formaten? Das macht nur bei Engines Sinn. Bei deinen eigenen Daten kannst du sie immer ins beste Format konvertieren und den Loader nehmen der dein Format laden kann. Mehr brauchst du doch nicht?
Wenn du schon so denkst... Macht es dann nicht mehr Sinn, alles in einem geregeltem eigenen Format zu lesen und die entsprechenden Texturen, dann alle eben in diesem Format, zu Konvertieren? Dann hat man nur 1 TexFormat das zu OpenGL geht. Das müsste dann aber auch mit allen Formaten kompatibel sein. Heißt also: 8, 16, 32 bit / Hinzufügbarer Alphakanal / Und bei schwarz Weiß: 2/(3,4) bits für beschleunigtes Laden (Height-, Bump-, Light-, und Detailmaps) / Mipmaps / Cubemaps / vieleicht fällt einem noch mehr ein...
Dann bräucht ich aber auch keinen Texturloader mehr... den dürft ich mir dann selbst schreiben... (Und zusätzlich dann auch noch die Konverter wohlgemerkt )
Bergmann89 hat geschrieben:
Hey,
für die glBitmap brauchst du nich unbedingt eine extra Lib, du kannst auch die Lazarus internen Klassen nutzen. Das kann man alles im Header einstellen. Das was dir fehlt darfst du gern noch ran programmieren. Die glBitmap wird seit einiger Zeit von der Community gepflegt und umso mehr da ihr Wissen beitragen umso mächtiger wir die Bibliothek am Ende. Das mit den CubeMaps kann ich sogar nachvollziehen, die sind beim Umbau etwas zu kurz gekommen. Das mit den Mipmaps is mir aber unklar, die kannst du auch schnell von der Graka errechnen lassen. So schlecht sind die Karten nich mehr, das man das mit ausliefern müsste. Falls du's jedoch unbedingt brauchst, siehe oben
€: das mit den Bitmaps stimmt auch nicht mehr. Die können jetzt Bitfields und werden nur so groß wie es notwendig ist. Also bei ner 8bit Bitmap werden auch nur 8bpp gespeichert. Hast du dir die glBitmap aus dem git-Repo geladen, oder von Lossy's Homepage? Die überarbeitete Community-Version gibts zur Zeit nur im Repo.
MfG Bergmann.
Vampyre Imaging Beispielsweise ist keine extra Lib. Die dürfte dann die glBitmap komplett ersetzen, da Vampyre eigene OpenGL (ja sogar DirectX) Extensions hat.
Bekomme nur amit irgendwie keine Texture auf mein Quad geklebt... (muss aber funktionieren... dem liegen Delphi Header bei und ja sogar vorkompilierte Beispiele... )
@Lazarus: Von der LCL will ich mich möglichst fernhalten.
@glBitmap: Ich denk, dann werde ich noch einiges an Zeit reininvestieren und mir die glBitmap Klassen mal genauer unter die Lupe nehmen.
mathias hat geschrieben:
Ich nehme mal an, es geht darum, das M$ den Support einstellt.
Meine OpenGL-Programme sind auch mit FPC und Lazarus geschrieben, nur laufen diese (momentan) nur Windows
1. Eingestellt hat wolltest du wohl sagen... (ist ja schließlich einige jahre her) Ist mir eigenlich schnuppe. Die meisten Fehler sind behoben und mit Kleinigkeiten komme ich selbst zurecht. Einmal im Jahr klatsch ich das OS neu drauf und dann läuft er wieder wie Schmitzkatz. Mal abgesehen davon das Win7 oder 8 (bald auch 9) mehr fehler haben dürften als XP. Die werden ja nicht umsonst noch unterstützt.
Windoof halt...
2. Ging sich um Vampyre Imaging... aber gut zu Wissen...
3. Ging sich um Fensterhandling, nicht um die OpenGL Header...
Ich frage mich, wieso du von SDL weg willst? Ich spekuliere einfach mal darauf, dass du SDL 1.2 noch verwendest. Nutze lieber das ebenfalls plattformunabhängige SDL 2, Header hab ich geschrieben: (okay Schleichwerbung: https://github.com/ev1313/Pascal-SDL-2-Headers)
Muss ich beim Umstieg auf SDL2 irgendwas beachten? Also haben sich Funktionen oder so geändert? Am besten du schickst oder linkst mir mal ein Template. (würd ich dankend annehmen )
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Metadraconis hat geschrieben:
Muss ich beim Umstieg auf SDL2 irgendwas beachten? Also haben sich Funktionen oder so geändert?
Nicht dass ich das selbst alles gelesen hätte - aber es gibt einen offiziellen MigrationGuide für Umsteiger von 1.2 nach 2.0.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
DevIL hab ich neulich erst auf meinem Linux installiert, das gibts also auf jeden Fall .
Wenn ich mir den Kommentar zum Laden erlauben darf: PNG mit Kompression dürfte nicht signifikant größer sein als ein selbstgestricktes Format mit 2 oder 3 bit Farbtiefe. Da die meiste Zeit beim Laden mit Auf-die-Festplatte-Warten draufgeht, braucht man sich darüber dann keine weiteren Gedanken mehr machen.
Cubemaps sind ja nichts weiter als sechs normale Bilder, da würde ich einfach entweder sechs PNG-Dateien oder alle sechs Bilder in eins packen und dann im Programm auseinanderschneiden.
Wegen Mipmaps: Gleiches Vorgehen, wenn man die unbedingt vorberechnen will.
PNG kann problemlos 16 bit pro Kanal. Wofür brauchst du 32-bit pro Kanal (selbst für Heightmaps erscheint mir das arg viel)? Laden ist, selbst wenn deine favorisierte Bibliothek das nicht unterstützt, in 100 Zeilen mit der libpng erledigt.
grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Der MigrationGuide ist toll, wenn auch in C++ erklärt. Ist so ziemlich die einzigste Quelle zum Thema SDL2 auf die man sich verlassen kann im Internet.
SDL 2.0 hat mich jetzt überzeugt. 100% von dem was ich vermisst habe, wurde verbessert/hinzugefügt. Dynamischeres Fensterhandling mit mehreren Fenstern, Messageboxen und wechsel vom Vollbildmodus ohne Verlust vom OpenGL-Context. Auch das Eventhandling wurde verbessert und der "Input" unterstützt jetzt auch Unicode...
Ich habs jetzt irgendwie geschafft, ein Fenster mit OpenGl-Context zu rendern. So weit so gut... aber es wird nur der Hintergrund (also glClearColor) gerendert und keines meiner gezeichneten Objekte. (kotz)
(Bin mir aber sicher, dass ich das irgendwie zurechtgebogen bekomme. Falls nicht wende ich mich wieder an euch)
@end: Respekt!!! Das alles in Pascal zu übersetzten würde ich mir wohl niemals zutrauen. (Bin halt auch ne faule sau)
@Textur: Ich werde dann wohl noch ne ganze zeit lang die SDL "TextureLibs" benutzen. Trotz allem würd es mich mal Interessieren, mit welchen libs man alle anderen Texturformate in .PNG umwandeln kann. (bzw. "exportieren kann")
@Alle:
IfSupport_Metadraconis =truethenwrite('Danke für die Hilfe und Ratschläge!');
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Nov 08, 2010 18:41 Beiträge: 769
Programmiersprache: Gestern
Metadraconis hat geschrieben:
Ich mal wieder...
@Textur: Ich werde dann wohl noch ne ganze zeit lang die SDL "TextureLibs" benutzen. Trotz allem würd es mich mal Interessieren, mit welchen libs man alle anderen Texturformate in .PNG umwandeln kann. (bzw. "exportieren kann")
Naja du koenntest auch waehrend des Buildprozesses (oder bei gesetzten Debug flag) ein anderes Programm starten das dir die Sachen konvertiert. Ich benutze hier zum Beispiel gerne Inkscape um SVG Dateien nach png umzuwandeln. Das wiederum wandel ich dann mit .NET in mein eigenes Format um. Hat halt den grossen Vorteil das man sich um Lizenzen, Dependecies usw. gar keine Gedanken mehr machen muss.
Mitglieder in diesem Forum: Google [Bot] und 49 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.