Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Schon mal über generierung der Header nachgedacht ? Das ist garnicht so aufwändig, da es bereits einige parser für die alten Specification files, von Khronos gibt und für die neuen braucht man einfach nur nen xml parser. Khronos ist nun auf XML umgestiegen und man kann nun hier die aktuellen specs für OpenGL bekommen. Dort ist alles drin, von jeder Konstante, Funktion bis hin ab wann diese Verfügbar ist oder obsolete. Ich hatte Ende letzten Jahres noch mit den Spec und tm files meine OpenGL VM gefüttert, da Handarbeit einfach unnötig ist. Mal gucken wann ich auf die neuen XML's umstelle.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ja, das wollte ich irgendwann gerne machen. Als ich die XMLs gesehen hab ich mir direkt das selbe gedacht Aber wie so oft ist das Problem hier die Zeit. Wenn ich mal dazu komme schau ichs mir mal an.
Edit : Die XML-Templates sind sehr interessant. Hab jetzt innerhalb kurzer Zeit ein Tool geschrieben dass mir schon nen grundlegenden Header aus dem XML generiert. Ich denke mal in Zukunft werd ich dann damit die dglOpenGL.pas erzeugen, das erspart uns jede Menge Arbeit
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Zumindest deklarieren die XMLs sog. Featuresets. Dort ist dann für die jeweiligen OpenGL-Versionen (OpenGL ES kommt über die XML übrigens auch in den Header rein) definiert welche Konstanten und Funktionen benötigt werden. So wie es aktuell aussieht sollte dass darüber funktionieren. Mein Konverter baut mir jetzt zumindest Load_GL_X_y - Prozeduren die die spezifischen Funktionszeiger zu einem Feature laden.
Positiver Nebeneffekt : Ich merke dass in unserem Header durchaus Sachen fehlen
Wobei ich jetzt grade überlege wie ich das mit GLU mache. Dafür gibts ja keine xml. Andere Teile bau ich aber auch über externe "includes", evtl. werd ich dass für GLU auch so machen, an dem Ding ändert sich ja nix mehr.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das mit dem automatischen Erzeugen sieht übrigens gut aus. Einiges wird noch händisch importiert (z.B. die Typen, Helferfunktionen, GLU), aber alle OpenGL (und ES) Funktionen und Konstanten, sowie das laden und die Features werden komplett automatisiert erzeugt.
Und eben hab ich damit mal ein paar Projekte (inkl. Projekt W) erzeugt und getestet, und alles hat wunderbar geklappt
Evtl. lad ich die Tage mal ne Version hoch mit der ihr testen könnt. Wenn die für gut befunden wurde erspart mir dass in Zukunft viel Zeit beim Pflegen / Updaten der Header, und unser Header ist jederzeit vollständig. Aktuell fehlen uns wirklich ein paar (selten genutzte) Dinge die im neuen Header dann drin sind.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Im prinzip ist es so einfach aber da steckt ja noch ein bisschen research dahinter, was kommt aus welchen nodes, was ist mit was verlinkt. Das kann schon einiges an Zeit sparen, wenn man nur noch dies portieren muss.
Wenn du den Code nicht raus geben willst, weil du sonnst noch einiges polishen müsstest und die maintenance Arbeit am Hacken hättest, dann würde ich den auch gerne haben wollen. Gibt ja pastebin, pm und einiges worüber der nicht permanent offen rum liegt und auf die eigene Reputation zurück fällt.
Mit dem vorigen format war das im prinzip auch sehr einfach aber hat dann doch 2-3 Tage Arbeit gekostet, bis das rund lief.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.