Wenn die OpenGL-Spezifikation aktualisiert wird, werden immer nur Funktionen hinzugefügt. Theoretisch sollte auf der neuesten und besten Hardware mit Unterstützung für die Kern- und Kompatibilitätsprofile der alte OpenGL1.1-Code einwandfrei laufen. Dies hat sich als wahr herausgestellt. Ich habe 12 Monate damit verbracht, OpenGL1.1 zu lernen und habe ein gutes Verständnis dafür.
Ich habe ein paar Kapitel eines dieser schicken neuen OpenGL4.2-Bücher gelesen. Fast alle Funktionen, auf die ich mich stütze, sind veraltet (z. B. Anzeigelisten), sodass ich davon ausgehen kann, dass es bessere Möglichkeiten gibt, all diese Dinge zu tun.
Betrachten wir, dass 1.1 wahrscheinlich von ALLER modernen Hardware vollständig unterstützt wird. 1.1 wurde 1992 veröffentlicht. Ich codiere nicht auf die harte Tour, nur um 20 Jahre alte PCs zu unterstützen. :-p Ich halte es für vernünftig, anzunehmen, dass die meisten Gamer Hardware einsetzen, die bei einem mittleren Alter von etwa 5 Jahren den Tiefpunkt erreicht.
Ich denke, die neueren Methoden sind so konzipiert, dass sie entweder eines von zwei Dingen sind: bessere Leistung oder einfacher zu programmieren. Ich habe irgendwo gelesen, dass es aber nie beides ist! XD
Welche OpenGL-Version wird am häufigsten von ~ 5 Jahre alter Hardware unterstützt? Welche Version ist angesichts dieser Überlegungen am sinnvollsten zu verwenden?
Ich würde hier anfangen: http://store.steampowered.com/hwsurvey
Ich würde einen bestimmten Zeitraum nicht als Ziel für einen bestimmten Prozentsatz von Nutzern festlegen. Wenn Sie beispielsweise 4cpus als Ziel festlegen, werden Sie nur 45% der Nutzer erreichen. Wenn Sie jedoch mit 2 arbeiten, werden Sie fast 90% erreichen.
quelle
Die Antwort hängt davon ab, ob Sie mit Intel-Grafiken arbeiten müssen oder möchten, die innerhalb des von Ihnen genannten Zeitraums veröffentlicht wurden.
Wenn Sie dies tun, beschränken Sie sich auf OpenGL 2.1 (oder sogar 1.5), wenn Sie dies nicht tun, erscheint 3.x vernünftig.
Ja, ältere Versionen von OpenGL laufen immer noch, und ja, aus einer Perspektive können sie einfacher erscheinen. Wenn Sie versuchen, Dinge zu tun (und Sie werden es tun), die sie nicht so leicht unterstützen, geraten die Dinge aus der Form. OpenGL 1.1 ist nicht nur der harte Weg - es ist oft der unmögliche Weg, um bestimmte Ergebnisse zu erzielen.
quelle
Erstens funktionieren OpenGL 1.1-Inhalte wie Anzeigelisten immer noch in einem neuen Kontext, vorausgesetzt, Sie haben das Kompatibilitätsprofil (was im Allgemeinen der Fall ist). Das einzige Problem ist, wenn Sie eine Portierung auf OpenGL ES, eine der konsolenspezifischen Grafikbibliotheken (diese sind in der Regel OpenGL-ähnlich wie OpenGL ES) oder sogar WebGL (was ohnehin einiges Nacharbeiten erfordern würde), erwarten.
Persönlich würde ich die Verwendung von Vertex- / Fragment-Shadern und VBOs empfehlen. Sie gibt es schon seit geraumer Zeit und sie bieten großartige Leistungsverbesserungen. Sie könnten wahrscheinlich sogar einen einfachen Fallback bereitstellen, wenn Sie die Funktionen in eine Klasse einschließen.
Möglicherweise können Sie auch Objekte wie Vertex-Array-Objekte emulieren.
quelle
Mit 5 Jahre alter Hardware verwenden einige Leute immer noch XP. Und das bedeutet, dass Sie nicht einmal mit DirectX 10 oder OpenGL 3 programmieren können. Und OpenGL 3 verfügt über viele Funktionen, von denen Sie wirklich profitieren würden, wie z. B. Framebuffers und dergleichen. Ehrlich gesagt, würde ich Ihre Systemanforderungen ein wenig erhöhen, damit Sie diese Funktionen einbinden können.
quelle
Es ist üblich, dass 3D-Software Codepfade sowohl für eine "Baseline" -Grafik-API-Version als auch für eine "neueste und beste" API-Version hat.
Gängige Ausgangsgrafikversionen sind D3D9 und OpenGL 2.1 / GLSL 120. Bei beiden fehlen Geometrie-Shader, da sie von alter Hardware nicht unterstützt werden.
Eine weitere Basisoption ist ANGLE, GLES 2.0 plus EGL, das auf D3D9, Desktop OpenGL und Mobile GLES 2.0 ausgeführt wird. Es ist das Backend für Google Chrome und Webgl in Chrome und Firefox.
http://code.google.com/p/angleproject/
Bei der von Ihnen ausgewählten "neuesten und besten" Version ist dies eine größere Herausforderung. Je aktueller die API und die Hardware sind, auf die Sie abzielen, desto besser aussehende Funktionen können Sie unterstützen - allerdings nur auf der neuesten und besten Hardware.
quelle