Also, ich bin neu in OpenGL ... Ich habe allgemeine Kenntnisse im Programmieren von Spielen, aber wenig praktische Erfahrung.
Ich habe in verschiedenen Artikeln und Büchern nachgesehen und versucht, in OpenGL einzutauchen, aber ich fand die verschiedenen Versionen und die alte und die neue Art, Dinge zu verwirren, verwirrend.
Ich denke, meine erste Frage ist, ob jemand Zahlen über den Prozentsatz der Spieler kennt, die jede Version von OpenGL ausführen können. Wie ist der Marktanteil? 2.x, 3.x, 4.x ...
Ich habe mir die Anforderungen für Half Life 2 angesehen, da ich weiß, dass Valve es mit OpenGL aktualisiert hat, um es auf einem Mac auszuführen, und ich weiß, dass sie normalerweise versuchen, eine sehr breite Anwenderbasis zu erreichen, und sie sagen, mindestens GeForce 8 Series. Ich habe mir den 8800 GT auf der Nvidia-Website angesehen und dort die Unterstützung für OpenGL 2.1 aufgelistet. Was sich für mich uralt anhört, weil es bereits 4.x gibt. Ich habe nach einem Treiber für 8800GT gesucht, der 4.2 unterstützt! Eine kleine Diskrepanz, lol.
Ich habe auch gelesen, dass XP nur bis zu einer bestimmten Version unterstützt, dass OS X nur 3.2 unterstützt oder alle möglichen anderen Dinge. Insgesamt bin ich nur verwirrt, wie viel Unterstützung für verschiedene Versionen und welche Version zu lernen / zu verwenden ist.
Ich suche auch nach Lernressourcen. Meine bisherigen Suchergebnisse haben mich auf die OpenGL SuperBible aufmerksam gemacht. Die 4. Ausgabe hat großartige Rezensionen auf Amazon, lehrt aber 2.1. Die fünfte Ausgabe lehrt 3.3 und es gibt ein paar Dinge in den Rezensionen, die erwähnen, dass die vierte Ausgabe besser ist und dass die fünfte Ausgabe die neuen Funktionen nicht richtig lehrt oder so? Grundsätzlich sehe ich sogar innerhalb des Lernmaterials Diskrepanzen und weiß nicht einmal, wo ich anfangen soll.
Soweit ich weiß, hat 3.x eine völlig neue Arbeitsweise eingeführt, und ich habe in verschiedenen Artikeln und Rezensionen gelesen, dass Sie sich von veralteten Funktionen wie glBegin (), glEnd () und vielen Büchern fernhalten möchten und Tutorials, die ich gesehen habe, verwenden diese Methode. Ich habe gesehen, wie Leute sagten, dass die neue Art, Dinge zu tun, komplizierter ist, die alte jedoch schlecht
Ich persönlich weiß, dass ich noch viel zu lernen habe, aber ich interessiere mich für Tessellation. also denke ich, dass das auch dazu beiträgt, weil, soweit ich das verstehe, das nur in 4.x ist?
[Übrigens, mein Desktop unterstützt 4.2]
quelle
Antworten:
Wenn Sie sich über die OpenGL-Abdeckung wundern, ist der Steam Hardware Survey ein guter Ausgangspunkt.
http://store.steampowered.com/hwsurvey?platform=pc
Leider scheint es momentan kaputt zu sein und es werden keine Statistiken für Videokarten angezeigt. : \
DirectX 9 ist vergleichbar mit OpenGL 2.1, DirectX 10 mit OpenGL 3.0 und DirectX 11 mit OpenGL 4.0. Dies ist der Grund für die Verwirrung.
XP unterstützt alle Versionen von OpenGL, jedoch nicht DirectX 10 oder höher. So wollte Microsoft die Leute zwingen, auf Vista zu aktualisieren, aber es hat nicht sehr gut geklappt. OpenGL ist ein offener Standard. Solange Hersteller von Videokarten bereit sind, Treiber für XP zu produzieren, werden neuere Versionen von OpenGL unterstützt.
Dies ist ein sehr großes Problem für OpenGL. Grundsätzlich schickten Sie in früheren Zeiten Dinge im "Sofortmodus" an die Videokarte. Beginnen Sie mit
glBegin
, machen Sie ein paar Sachen, enden Sie mitglEnd
. Grafikkartentreiber mögen dies jedoch überhaupt nicht . Wie können sie wissen, wie viel Zeug Sie senden werden? Werden es 4 Eckpunkte für ein texturiertes Quad oder 100.000 für ein enthäutetes Modell sein? Aus diesem Grund haben sie Vertex Buffer Objects (VBOs) eingeführt. Während der Sofortmodus eine verknüpfte Liste ist, ist ein VBO ein statisches Array. Der Entwickler weiß, wie groß es ist, der Fahrer weiß, wie groß es ist. Alle sind glücklich. Daher entschied sich das OpenGL-Standards Board (Khronos Group), den Sofortmodus für OpenGL 3.0 und höher zu deaktivieren. Dies ist jedoch problematisch, wie ich anhand eines einfachen Beispiels zeigen werde.Angenommen, Sie möchten ein strukturiertes Quad anzeigen, beginnend bei Null.
In OpenGL 2.1:
GL_PROJECTION
.GL_MODELVIEW
.GL_TEXTURE_2D
Griff.glBegin
...glVertex2f
...glTexCoord2f
...glEnd
.In OpenGL 3.0:
GL_TEXTURE_2D
Griff.glDrawArrays
.Was könnte also in der ersten Version schief gehen?
Und in der zweiten Version können Sie Probleme mit den oben genannten und haben :
Ohne geeignete Debug-Tools wird dies zu einem ernsthaften Problem. Dies ist der Grund, warum die Leute sagen, Sie sollten sich an den Sofortmodus halten. Zum Glück haben wir jetzt den kostenlosen und ausgezeichneten gDEBugger , aber es ist kein Wundermittel .
Um Ihre Frage zu beantworten: Es hängt von Ihrem Spiel ab. Wenn Sie ein breites Publikum erreichen möchten (zum Beispiel ein Gelegenheitsspiel oder ein 2D-Plattformspiel), sollten Sie auf 2.1 abzielen. Wenn Sie ein episches Weltraumspiel erstellen, das ohnehin nicht auf einer sechs Jahre alten Hardware ausgeführt werden kann, wählen Sie Ziel 3.3. Und wenn Sie das Neueste und Beste für die Zukunftsfähigkeit benötigen, wählen Sie Ziel 4.0.
quelle
Einige Statistiken zur Hardwarekompatibilität finden Sie in der Steam-Umfrage: http://store.steampowered.com/hwsurvey/ Obwohl DX10 und DX11 aufgeführt sind, ist die Hardwarekompatibilität mit OpenGL 3 bzw. OpenGL 4 identisch. Beachten Sie jedoch, dass der Installationsstatus des OpenGL-Treibers bei Benutzern normalerweise schlechter ist als bei DX.
Windows XP unterstützt weder DX10 noch DX11, aber OpenGL 3 und 4 sollten in Ordnung sein, sofern die Treiber in Ordnung sind. OSX unterstützt OpenGL 3 (maximal), unter Linux erhalten Sie OpenGL 4 mit Treibern von ATI / NVIDIA-Anbietern (natürlich nur, wenn die Hardware dies unterstützt).
Dann gibt es noch die mobilen ES-Versionen von OpenGL. In der Tat würde ich vorschlagen, OpenGL ES 2.0 zu untersuchen, da es kleiner ist, so dass es einfacher zu erlernen ist, aber Sie müssen auch moderne Methoden anwenden, dh Shader und VBOs. Es ist auch das, was auf den meisten Mobilgeräten verwendet wird (Sie könnten also auch mobile Spiele entwickeln), und WebGL ist im Grunde dasselbe, sodass Sie all Ihr Lernen im Webbrowser mit seinen schnellen Entwicklungsvorteilen durchführen können. OpenGL ES 3.0 ist diesen Sommer fällig.
Tessellation ist eine OpenGL 4.0-Funktion. Sie sollten zuerst die anderen Arten von Shadern lernen, geschweige denn alle Grundlagen, aber ich stimme zu, dass es interessant ist - tatsächlich habe ich einen kleinen Test damit geschrieben: http://blog.tapiov.net/post/15189341463/playing- with-opengl-4-tessellation
quelle