Hallo und herzlichen Dank für Ihren Besuch dieser Webseite. Wenn Sie auf der Suche nach einem Grafikprogrammierer für 2D und 3D Grafik sind, dann sind Sie bei mir richtig.
Ursprünglich habe ich an der Universität Erlangen-Nürnberg Informatik mit Schwerpunkt grafische Datenverarbeitung studiert und mich noch während des Studiums selbständig gemacht. Als freiberuflicher Grafikprogrammierer unterstütze ich Unternehmen in Industrieprojekten. Außerdem entwickle ich Computerspiele und Virtual Reality Erfahrungen.
An Grafiktechnologie setze ich primär Unity 3D, OpenGL, OpenGL ES sowie WebGL ein. Die bevorzugte und etablierte Programmiersprache für Grafikprogrammierung ist C++ beziehungsweise für Unity 3D C# sowie für WebGL JavaScript.
Bei OpenGL handelt es sich um einen Industrie-Standard der Khronos Group, in dem eine plattformübergreifende Programmier-Schnittstelle für grafische 2D/3D Darstellung festgelegt ist. Diese Schnittstelle wird von den Grafiktreiber-Entwicklern von GPU-Herstellern implementiert, um eine einheitliche Schnittstelle unter unterschiedlichen GPU-Modellen zu gewährleisten. Dies ermöglicht, dass GPU-Modelle ersetzt oder erneuert werden können, die auf dem Standard aufsetzende Software jedoch weiterhin lauffähig bleibt und auch noch zur nächsten GPU-Generation kompatibel ist. Der OpenGL Standard ist ein verhältnismäßig niederer Abstraktionslevel, der lediglich technische Funktionalitäten, die innerhalb der GPU realisiert sind, in vereinheitlichter Form nach außen gibt.
Auf der OpenGL Ebene werden Pixeldaten in unterschiedlichen Imageformaten wie beispielsweise RBGA als Textur in den Grafikspeicher der GPU hochgeladen. Die übertragenen Pixeldaten können dann genutzt werden, um Dreiecke zu texturieren. Mittels zwei aneinanderliegenden Dreiecke lässt sich ein Rechteck bilden, das mit entsprechender Texturierung genutzt werden kann, um ein zweidimensionales oder dreidimensionales Bild darzustellen. Auf die gleiche Weise können auch umfangreiche 3D-Modelle visualisiert werden. Sollen Bilder in gängigen Bildformaten wie PNG oder JPEG geladen werden, müssen diese erst mit einem Image Loader in ein entsprechendes von der GPU verarbeitbares Format umgewandelt werden. Über mathematische Transformationen können die Dreiecke verschoben, skaliert und rotiert werden.
Bei OpenGL ES handelt es um ein reduziertes Subset an OpenGL Funktionen, das in vereinfachten Embedded System GPUs zur Verfügung steht. Im Unterschied zu Desktopsystemen, die mit dem kompletten OpenGL Funktionsumfang arbeiten, stehen hier nur ausgewählte Funktionen zur Verfügung.
Bei WebGL handelt es sich um die angepasste Webbrowser-Variante von OpenGL, die anstelle von C++ mit JavaScript programmiert wird. Während OpenGL für gewöhnlich nur als ausführbare Anwendung kompiliert werden kann, kann WebGL Software innerhalb des Webbrowsers dargestellt werden. Dadurch wird im Webbrowser auch 3D-Grafik darstellbar. In Grafikengine-Softwareprodukten wie Unity 3D können Anwendungen als WebGL Code heraus gespielt werden und somit entwickelte 3D-Anwendungen auch innerhalb eines Webbrowsers ausführbar machen.
Als konkurrierende Standards auf vergleichbarer Abstraktionsebene gibt es neben OpenGL unter anderem noch DirectX und Metal. Bei Vulkan handelt es sich um einen Industrie-Standard, der noch mehr manuelle Programmierbarkeit der GPU an den Entwickler nach außen reicht.
Eine Grafikengine-Software bezeichnet die anwendungsunabhängige Bibliothek zum Betreiben einer grafischen Hardware (GPU, Grafikengine-Hardware) zur Visualisierungen von Computergrafik. Als Grafikengine-Software bezeichnet man die Schicht zwischen der Grafikschnittstelle und dem Code des Anwendungsentwicklers.
Um mit relativ rudimentären Funktionen, die auf niedrigen Grafikschichten wie OpenGL oder DirectX zur Verfügung gestellt werden, komplexe zeitgemäße moderne Anwendungen zu fabrizieren, wird Grafikengine-Software eingesetzt. Hierbei handelt es sich um die Abstraktionsschicht, welche die Brücke zwischen einer niedrigen technischen Schicht wie OpenGL zu einer mehr oder minder komfortablen Anwendungsentwicklerschicht bildet.
Damit ein Anwendungsentwickler effiziente grafische Anwendungen implementieren kann, möchte er sich beispielsweise nicht mit der Umwandlung von Bildformaten oder der Texturierung von Dreiecken befassen, sondern Bilddateien in standardisierten gängigen Formaten laden und in wenigen Codezeiten an passenden Bildschirmkoordinaten auf dem Bildschirm visualisieren.
Eine gängige, am Markt etablierte, umfangreiche Grafikengine-Software ist hier Unity 3D, in der viele unterschiedliche grafische Abstraktionsschichten wie OpenGL, OpenGL ES, DirectX, Vulkan oder Metal vereinheitlicht sind. Dem Anwendungsentwickler werden komplexe Instrumente an die Hand gegeben, die bis zur Darstellung von bewegten 3D Figuren führen. Die fertige Software kann sowohl für Desktop PCs und Macs als auch für mobile Geräte wie iPhone, Android Smartphones, iPads oder Android Tablets kompiliert werden. Auch Virtual Reality Exporte werden unterstützt, ohne dass sich der Anwendungsentwickler mit zu vielen technischen Low Level Details beschäftigen muss. Unity 3D bietet dem Anwendungsentwickler eine hohe Abstraktionsebene.
In speziellen Anwendungsfällen, die nicht von Standard-Grafikengine-Software abgedeckt wird, kann es vorteilhaft sein, eigene Grafikengine-Software zu implementieren, da diese besser auf die vorhandenen Ressourcen von Systemen abgestimmt werden können.
Um grafiklastige Software optimal an die Hardware anzupassen, sind oftmals Eingriffe in tiefere Schichten notwendig, um sie bestmöglich zu optimieren und eine gute Performance zu erzielen.
Nicht immer decken die Workflows von fertigen Grafikengine-Softwareprodukten die Anforderungen ab. Von daher ist es eine Abwägungssache, ob ein fertiges oder individuell entwickeltes Produkt für einen Anwendungsfall geeigneter erscheint.
In der Vergangenheit habe ich Projekte innerhalb der Automobilbranche im Embedded Systems Bereich umgesetzt, im Bereich interaktive Unterhaltung Produkte für den Endkundenmarkt umgesetzt sowie als Spezialist Medienagenturen unterstützt, wenn es darum ging komplexe spezifische 2D / 3D Grafikprobleme oder -anforderungen zu lösen.
Über die Zeit hinweg habe ich mehrere unterschiedliche Grafikengines für spezielle Anwendungsbereiche implementiert - neben OpenGL Implementationen auch reine Software-Renderer. Unterschiedliche Grafikengines habe ich gewartet, fehlerbereinigt, optimiert und weiterentwickelt. Aber ich habe auch die Vorzüge fertiger Grafikengines kennengelernt, mit denen es möglich ist, mit deutlich überschaubarerem Implementationsaufwand zu imposanten Ergebnissen zu kommen.
Bei entsprechendem Bedarf setze ich Ihre geplanten Grafikprojekte um oder unterstütze Ihr vorhandenes Team vor Ort.
Wenn Sie vorab eine Kalkulation zu einem Fixpreis benötigen, kontaktieren Sie mich zunächst bitte mit einer eigenen Budgetvorstellung. Daraufhin wird eine Realisierbarkeit innerhalb des vorgegebenen Rahmens geprüft. Die Preise können je nach Einsatzort, Schwierigkeitsgrad und zeitlichem Rahmen abweichen. Für weiter entfernte Einsatzorte können zusätzliche Reiseaufwände anfallen.
Freie Kapazitäten nur auf Anfrage.
Dipl.-Inf. Andreas Osswald
Im Jahr 2003 habe ich mich noch während meines Studiums selbständig gemacht und bin seitdem als freiberuflicher Grafikprogrammierer in Industrieprojekten tätig. Parallel dazu habe ich Apps, Computerspiele als auch Virtual Reality Erfahrungen umgesetzt.
2007 habe ich den Diplom-Studiengang Informatik an der Friedrich-Alexander-Universität Erlangen-Nürnberg mit Schwerpunktfach grafische Datenverarbeitung sowie den Hauptfächern Künstliche Intelligenz und Computernetzwerke sowie dem Nebenfach Astrophysik erfolgreich abgeschlossen.