Crysis nerd
Freizeitschrauber(in)
Guten Tag,
an anderer Stelle schon angekündigt, wollte ich euch nun endlich ein Projekt vorstellen. Es geht um eine Library zur Entwicklung grafischer Applikationen, die ich seit ca. 3 Monaten entwickle. Ich hatte dieses Projekt schon länger geplant und dieses Semester bot sich die geniale Gelegenheit die Library direkt bei einem Computergrafik-Praktikum einzusetzen, welches ich geleitet habe. Die letzten 3 Wochen haben also einige Leute mit dieser Library gearbeitet und sogar was cooles damit geschafft (ein Minecraft artiges Spiel mit einigen coolen Grafikeffekten; bei Interesse erzähle ich nochmal mehr darüber). Diese 3 Wochen haben die Library auf die Probe gestellt und mir einiges an Verbesserungspotenzial aufgezeigt.
Aber um zur Sachen zu kommen: Worum gehts?
Lumina ist eine Library die die OpenGL Render Pipeline abstrahieren möchte. Das muss die erste Erkenntnis sein: Es soll keine Spiele-Engine oder ähnliches sein. Es gibt auch nichts was in die Richtung Szene oder Kamera geht. Es ist lediglich ein Toolkit für grafische Applikationen. Man sollte also wissen, was eine Grafikpipeline ist und wie das alles grundlegend funktioniert, sonst kommt man damit nicht weit. Dies hat den Vorteil, dass man immer weiß, was auf der Hardware passiert. Außerdem hat man so höheres Potenzial selber etwas zu optimieren.
Und warum dann nicht direkt OpenGL?
Weil OpenGL (auf eine Art und Weise) hässlich, verdammt schwer und voller kleiner Fallen ist. Sich in OpenGL auszudrücken fällt sehr schwer. Es gibt haufenweise Fehler, die man ewig suchen muss und so viele Stolpersteine, über die man sicherlich fallen wird. Genau das soll Lumina abnehmen: Lumina legt daher viel Wert auf ein typ-sicheres Interface und jede Art von Fehlererkennung. Durch die starke Typisierung können viele Fehler schon zur Kompilierzeit erkannt werden und viele weitere Fehler werden zur Laufzeit gemeldet. Alle Fehlerabfragen zur Laufzeit kann man allerdings auch (zur Kompilierzeit) deaktivieren, sodass man durch solche Fehler-checks keine Performance opfern muss.
Das ganze ist in modernem C++ geschrieben (derzeit noch komplett C++11 kompatibel, in der Zukunft werde ich auch C++14 Features nutzen).
Links:
Bei Interesse findet ihr hier weitere Informationen: https://github.com/LukasKalbertodt/lumina
Dies ist jetzt erstmal kein Projekt zum sehen oder anfassen, sondern nur eine Library. Allerdings habe ich einige Test-Applikationen geschrieben, die sehenswert sind: https://github.com/LukasKalbertodt/lumina-test
Bemerkenswert bei den Test-Projekten sind weniger die Projekte selber, als die Tatsache in welcher (kurzen) Zeit und mit wie wenig Code ich die geschrieben habe.
Außerdem werde ich später hier noch Screenshots vom Minecraft-Klon posten.
Ich wollte euch dieses Projekt eigentlich nur vorstellen, aber eine Sache wäre da noch: Ich würde mich über Leute freuen, die daran mit arbeiten wollen. Ich habe zwar schon mit einigen Kollegen aus der Uni daran gearbeitet, aber die haben erstmal keine Zeit dafür. Wenn ihr ernsthaftes Interesse habt, Ahnung von C++11/14 und auch ein wenig Erfahrung mit Grafikprogrammierung, meldet euch!
Ansonsten bin ich gespannt was ihr davon haltet
LG
Lukas
an anderer Stelle schon angekündigt, wollte ich euch nun endlich ein Projekt vorstellen. Es geht um eine Library zur Entwicklung grafischer Applikationen, die ich seit ca. 3 Monaten entwickle. Ich hatte dieses Projekt schon länger geplant und dieses Semester bot sich die geniale Gelegenheit die Library direkt bei einem Computergrafik-Praktikum einzusetzen, welches ich geleitet habe. Die letzten 3 Wochen haben also einige Leute mit dieser Library gearbeitet und sogar was cooles damit geschafft (ein Minecraft artiges Spiel mit einigen coolen Grafikeffekten; bei Interesse erzähle ich nochmal mehr darüber). Diese 3 Wochen haben die Library auf die Probe gestellt und mir einiges an Verbesserungspotenzial aufgezeigt.
Aber um zur Sachen zu kommen: Worum gehts?
Lumina ist eine Library die die OpenGL Render Pipeline abstrahieren möchte. Das muss die erste Erkenntnis sein: Es soll keine Spiele-Engine oder ähnliches sein. Es gibt auch nichts was in die Richtung Szene oder Kamera geht. Es ist lediglich ein Toolkit für grafische Applikationen. Man sollte also wissen, was eine Grafikpipeline ist und wie das alles grundlegend funktioniert, sonst kommt man damit nicht weit. Dies hat den Vorteil, dass man immer weiß, was auf der Hardware passiert. Außerdem hat man so höheres Potenzial selber etwas zu optimieren.
Und warum dann nicht direkt OpenGL?
Weil OpenGL (auf eine Art und Weise) hässlich, verdammt schwer und voller kleiner Fallen ist. Sich in OpenGL auszudrücken fällt sehr schwer. Es gibt haufenweise Fehler, die man ewig suchen muss und so viele Stolpersteine, über die man sicherlich fallen wird. Genau das soll Lumina abnehmen: Lumina legt daher viel Wert auf ein typ-sicheres Interface und jede Art von Fehlererkennung. Durch die starke Typisierung können viele Fehler schon zur Kompilierzeit erkannt werden und viele weitere Fehler werden zur Laufzeit gemeldet. Alle Fehlerabfragen zur Laufzeit kann man allerdings auch (zur Kompilierzeit) deaktivieren, sodass man durch solche Fehler-checks keine Performance opfern muss.
Das ganze ist in modernem C++ geschrieben (derzeit noch komplett C++11 kompatibel, in der Zukunft werde ich auch C++14 Features nutzen).
Links:
Bei Interesse findet ihr hier weitere Informationen: https://github.com/LukasKalbertodt/lumina
Dies ist jetzt erstmal kein Projekt zum sehen oder anfassen, sondern nur eine Library. Allerdings habe ich einige Test-Applikationen geschrieben, die sehenswert sind: https://github.com/LukasKalbertodt/lumina-test
Bemerkenswert bei den Test-Projekten sind weniger die Projekte selber, als die Tatsache in welcher (kurzen) Zeit und mit wie wenig Code ich die geschrieben habe.
Außerdem werde ich später hier noch Screenshots vom Minecraft-Klon posten.
Ich wollte euch dieses Projekt eigentlich nur vorstellen, aber eine Sache wäre da noch: Ich würde mich über Leute freuen, die daran mit arbeiten wollen. Ich habe zwar schon mit einigen Kollegen aus der Uni daran gearbeitet, aber die haben erstmal keine Zeit dafür. Wenn ihr ernsthaftes Interesse habt, Ahnung von C++11/14 und auch ein wenig Erfahrung mit Grafikprogrammierung, meldet euch!
Ansonsten bin ich gespannt was ihr davon haltet

LG
Lukas




Ich bin jedenfalls sehr gespannt.