Slin hat geschrieben:Allerdings gibt es von AMD jetzt Mantle als potentiell Alternative mit viel geringerem Driver Overhead [...]
Mantle ist durchaus interessant, aber erstens ist es wohl extrem low-level (und daher wohl vielleicht nicht unbedingt für Anfänger geeignet), zweitens kommt man als Normalsterblicher afaik im Moment noch nicht an Mantle ran (falls ich da falsch liege: Link pls :) ) und drittens wird es afaik nur auf einem PC mit AMD Hardware laufen...
Slin hat geschrieben:Außerdem läuft OpenGL nicht nur auf Linux sondern ja auch auf OSX und Windows und außerdem auf iOS und Android, was das ganze deutlich universeller und flexibler macht.
Ja, auf all diesen Plattformen gibt es "OpenGL". Das "OpenGL", das auf iOS und Android läuft, ist allerdings ein anderes "OpenGL" als das, das auf Linux und Windows läuft. Und auch wenn sich alle ähnlich schauen: Du willst auf einem Mobiltelefon sowieso nicht den selben Code zum Rendern verwenden, wie z.B. auf einem PC. Von OSX reden wir besser gar nicht, Apple hat vor langer Zeit beschlossen, dass OpenGL 3.2 für die Menschheit gut genug ist. Und wenn Apple sowas beschließt, dann muss man es entweder toll finden oder trotzdem damit leben. Erst mit Mavericks haben sie sich aufgemacht und offenbar mühevoll ins aktuelle Jahrzehnt geschleppt wo sie, wie es aussieht, bei 4.2 erschöpft zu liegen gekommen sind...
In der Praxis kannst du mit OpenGL meiner Erfahrung nach höchstens Windows und Linux abdecken. Und wie in der Welt von OpenGL üblich, funktioniert selbst das bereits nur bedingt, zumidest wenn wir von modernem OpenGL reden:
- Mit den Drivern wird es laaaaangsam besser, im Moment ist das aber immer noch ein massives Problem (Intel...).
- Wie immer kocht jeder Hersteller sein eigenes Süppchen und da es kein Zertifizierungsprogramm o.ä. gibt, muss man damit leben, dass jeder Driver jedes Herstellers alle möglichen individuellen Macken hat, was OpenGL zu einem sich bewegenden Ziel macht. Beispiel: Jeder OpenGL Driver muss seinen eigenen Shadercompiler mitliefern und da man GLSL nicht vorkompilieren kann, muss dein GLSL Code mit allen aktuellen und zukünftigen Drivern aller Hersteller, die du unterstützen willst, kompilieren. Die Tatsache, dass es in der Welt von OpenGL tatsächlich an Compilerfehlern beim Endbenutzer scheitern kann und oft genug auch tut, ist fast schon komisch...
- OpenGL wird nur auf dem Windows Desktop unterstützt, wenn du für den Windows Store (Windows RT bzw. Windows Phone) entwickeln willst, musst du zu Direct3D greifen.
Slin hat geschrieben: Durch Extensions sowohl von NVIDIA als auch AMD lässt sich angeblich auch in OpenGL der Driveroverhead extrem reduzieren was dann erhebliche Vorzüge gegenüber DirectX bringen könnte, das habe ich mir allerdings noch nicht so genau angeguckt...
Bin mir nicht ganz sicher, worauf du da genau anspielst, aber ich kenne nur eine
NVIDIA Extension, die in diese Richtung geht; und die dient dazu, einen Teil des Overhead zu reduzieren, der vor allem unnötigerweise durch das bescheu...eigenartige Design der OpenGL API anfällt...allerdings natürlich nur auf NVIDIA Hardware mit dem passenden Driver; wenn AMD tatsächlich eine ähnliche Extension anbietet, müsste man natürlich den ganzen "OpenGL" Code nochmal für AMD schreiben...funktioniert dann allerdings natürlich wieder nur für AMD Hardware mit dem passenden Driver...Willkommen in der Welt von OpenGL... ;)
Slin hat geschrieben:Also ich sehe die Zukunft aktuell eher bei OpenGL 4+ mit Core Profile, vor allem durch die größere Plattformunabhängigkeit, allerdings auch mit mehr Willkür durch die Hardwarehersteller mit ihren Extensions, die man andererseits aber dann leider auch nutzen will wenn es sie gibt.
Die "Plattformunabhängigkeit" von OpenGL existiert vielleicht in der Welt der Märchen und Sagen, in der Praxis sieht es, zumindest meiner Erfahrung nach, dagegen so aus, dass man mit OpenGL bestenfalls ein wenig Betriebssystemabhängigkeit gegen Herstellerabhängigkeit eintauschen kann. Ja, alle möglichen Plattformen unterstützen "OpenGL". "OpenGL" ist aber leider ein einziges Wirrwarr aus Versionen. Ja wenn man den Leuten, die bei uns für Mobile entwickeln, so zuhört, hört man die nichtmal über "OpenGL" reden, die reden immer nur darüber, was dieses und jenes iPhone nun wieder anders macht oder welches Samsung Tablet Feature X unterstützt. So ist es halt. Das soll auch gar keine Argumentation gegen OpenGL sein. Ich sehe die Zukunft als multiplattform. Unterschiedliche Plattformen sind nunmal unterschiedlich und genau in diesen Unterschieden liegt ja überhaupt erst der Sinn ihrer Existenz. Anstatt von einer Welt zu träumen, in der alles und nichts unterschiedlich ist, halte ich es für sinnvoller, die Unterschiede der Plattformen zu begrüßen und zu seinen Verbündeten zu machen. Es wird notwendigerweise immer plattformspezifische APIs geben und manche Plattformen verwenden heute eben ihre Version von "OpenGL", andere Direct3D und wieder andere wieder etwas Anderes und morgen wird es wieder etwas Anderes geben. Insbesondere ist "Plattformunabhängigkeit" imo kein Argument, das für einen Anfänger in dem Bereich von Relevanz ist, der sich überhaupt erstmal auf irgendeiner Plattform zurechtfinden muss. Neue Technologien, Sprachen, APIs etc. zu lernen ist früher oder später sowieso unvermeidbar und sehr lehrreich... ;)