Suche OpenGL 2.1 SDK!
-
Fakt ist doch das OpenGL low-leveliger ist als D3D.
-
[quote="Scorcher24]...aber die Posts hast Du nicht gelesen.[/quote]
Ich habe bis jetzt jeden Post gelesen!
Schau mal hier rein:
http://de.wikipedia.org/wiki/OpenGLSoll das heissen, dass ich unter Windows alles was nach 1.1 kommt vergessen kann? Wie machen es denn andere Engines? Irrlicht hat 1.5! Unigine hat 4.0! CryEngine hat 4.1!
-
X.DarkForce.X schrieb:
Soll das heissen, dass ich unter Windows alles was nach 1.1 kommt vergessen kann? Wie machen es denn andere Engines? Irrlicht hat 1.5! Unigine hat 4.0! CryEngine hat 4.1!
Lies doch mal meinen ersten Post
-
X.DarkForce.X schrieb:
Soll das heissen, dass ich unter Windows alles was nach 1.1 kommt vergessen kann? Wie machen es denn andere Engines? Irrlicht hat 1.5! Unigine hat 4.0! CryEngine hat 4.1!
Bist Du so schwer von Begriff oder tust Du nur so?
Du kannst Dir alles was nicht OpenGL 1.5 ist, aus den Treibern von ATI und OpenGL laden als Funktionszeiger. Windows unterstützt OpenGL nativ bis 1.5. Nur die Treiber der Grafikkarten fügen mehhr hinzu. Mit Hilfe von Libs wie GLew sparst Du dir den Prozess das aus den Dateien zu laden. Du musst aber trotzdem testen, ob dieser Code in den Treibern unterstützt wird.
Beispiel aus Code von mir:bool NLShaderLoader::isAvailable() { return ( glewGetExtension("GL_ARB_fragment_program") && glewGetExtension("GL_ARB_vertex_program") && glewGetExtension("GL_ARB_shader_objects") && glewGetExtension("GL_ARB_shading_language_100")); }
So testet man ob der Code lauffähig ist auf einem System. In diesem Bsp. für Shader.
Hoffe Du hast es jetzt verstanden. -.-
rya.
-
Fakt ist doch das OpenGL low-leveliger ist als D3D.
Finde ich nicht. Natürlich ist es mit OpenGL ein wenig mehr arbeit einen Buffer zu erstellen oder Shader zu laden, aber sonst ist eigentlich zwischen OpenGL und DX kein unterschied, bis auf dass DX OOP ist und GL eine State machine.
Außerdem ist OpenGL in manchen Sachen auch schneller als DX, z.B. Drawcalls
*Jetzt muss ich den DX'lern auch mal auf die Füße treten*
-
Potatoman schrieb:
Finde ich nicht. Natürlich ist es mit OpenGL ein wenig mehr arbeit einen Buffer zu erstellen oder Shader zu laden, aber sonst ist eigentlich zwischen OpenGL und DX kein unterschied, bis auf dass DX OOP ist und GL eine State machine.
Außerdem ist OpenGL in manchen Sachen auch schneller als DX, z.B. Drawcalls
*Jetzt muss ich den DX'lern auch mal auf die Füße treten*
In D3D hast du genau die selbe Arbeit mit Shadern und Buffern. Ausserdem hat OOP absolut nichts mit einer State Machine zu tun. D3D ist OOP und ist genauso eine State Machine (wenn auch etwas indirekter mit den Immutable State Blocks)
Und das Argument mit den "schnelleren Drawcalls" ist auch ein Nullargument. Klar sind einige OGL Draw Calls schneller - dafuer machen sie auch weniger. In D3D sind einige DrawCalls teurer, dafuer kannst du mit einem Drawcall eine halbe Szene auf einmal rendern. Das schenkt sich insgesamt nicht viel.
-
Bitte nicht schon wieder ne Diskussion über "OpenGL vs. D3D".
Dem thread-Ersteller wurde eigentlich zu genüge geantwortet, er hats gelesen scheints aber nicht zu kappieren - warum auch immer.
Was soll der gelinkte Wikipedia-Artikel aussagen? Bzw. wo steht da, dass man unter Windows alle Funktionen nach ver1.1 vergessen kann?Wurde ja nun zu genüge gesagt: Windows unterstützt von Hause aus nur OpenGL 1.1
Sofern du allerdings eine einigermassen aktuelle Grafikkarte und Grafikkartentreiber hast kannst du selbstverständlich auch neuere Funktionalitäten nutzen. Wie das geht wurde ja ebenfalls schon mehrfach erklärt.Es hilft in der Regel auch, sich mal n Buch zu schnappen und die 2 Seiten zu lesen, auf denen das erklärt wird.
-
Naja, der Artikel erklärt lediglich, was hier zahlreiche schon versucht haben verständlich zu machen, aber evtl. kann er hiermit mehr anfangen:
http://www.opengl.org/wiki/Getting_started
Absatz OpenGL2.0+ Extensions sollte alle Fragen beantworten.
-
3dler2 schrieb:
Und das Argument mit den "schnelleren Drawcalls" ist auch ein Nullargument. Klar sind einige OGL Draw Calls schneller - dafuer machen sie auch weniger. In D3D sind einige DrawCalls teurer, dafuer kannst du mit einem Drawcall eine halbe Szene auf einmal rendern. Das schenkt sich insgesamt nicht viel.
Ach.
Bestimmte D3D Calls sind recht langsam, weil die Aufteilung Kernel-Mode vs. User-Mode von MS recht starr vorgegeben wurde.
D.h. bestimmte Calls führen zwangsläufig zu einer Kernel-Mode-Transition. Und so Kernel-Mode-Transitions sind nunmal ziemlich langsam.Mit D3D 10 oder 11 soll sich das stark verbessert haben, aber da es weder 10 noch 11 auf XP gibt, ist D3D 9 für viele Dinge immer noch Standard.
Bei OpenGL bleibt dem Grafikkarten-Hersteller überlassen wann wo und warum in den Kernel-Mode gewechselt wird. Dadurch können OpenGL-Implementierungen Dinge optimieren, die ein D3D9 Treiber nicht optimieren kann. Daher sind bestimmte API Calls in OpenGL schneller.
Hat also nichts damit zu tun wieviel ein API Call an Arbeit erledigt. Und zeig mir mal bitte wie man mit D3D mit einem API Call "eine halbe Szene" rendern soll. Vorausgesetzt man verwendet mehr als zwei Texturen/Shader/Vertex-Buffer/... - was ich mal als nicht unüblich bezeichnen würde.
-
Das sind Argumente die so vielleicht vor 15 Jahren noch Gewicht hatten. Nur weil bestimmte API Calls "langsamer" sind bedeutet das noch lange nicht dass die API am Ende als ganzes langsamer ist...Das Design der OpenGL API hat dafür halt einfach andere Bottlenecks (z.B. das eigentümliche Objektmodell das zu dem ganzen glBind* Kram etc. führt, NVIDIA berichtet hier z.B. von 7x speedup ihrer Bindless OpenGL Extension gegenüber normalem OpenGL).
Anyway, man zeige mir bitte eine Anwendung in der es irgendeinen signifikanten Geschwindigkeitsunterschied gegenüber Direct3D zugunsten OpenGL gibt (das Gegenteil kommt einem dank oftmals schlechter Treiber dafür wirklich ab und zu unter wenn man mal wieder liest dass wieder einer seinen Renderer nach Direct3D portiert hat weil das ganze dann auf Intel GPUs auf einmal doppelt so schnell läuft...). Alles in allem ist die Performance jedenfalls absolut kein Grund sich für D3D oder OGL zu entscheiden. Das weitaus bessere/zeitgemäßere API Design von D3D würde ich da schon eher als Argument anführen. Und wenn man das ganze natürlich woanders als unter Windows laufen lassen will hat man ohnehin keine andere Wahl als OpenGL...