2009-03-07 4 views

Antwort

26

OpenGL ist eine Bibliothek zum Zeichnen von Grafiken auf niedriger Ebene. Es zeichnet sich vor allem bei 3D-Grafiken aus. Der wichtigste Konkurrent zu OpenGL ist Direct3D (nicht das ganze DirectX).

GL ist nur wirklich leistungsstark, wenn Sie es hardwarebeschleunigt haben. Heute hat fast jede Desktop- oder Laptop-Lösung eine GL-Beschleunigung, aber auf einigen Systemen, bei denen die Grafikkarte in den Chipsatz integriert ist, ist es immer noch ziemlich langsam.

Für den täglichen Hacken kann der GL viele ungewöhnliche Zwecke erfüllen. Der Grund dafür ist, dass Sie die Verarbeitungsleistung der GPU für grafikbezogene Aufgaben nutzen können. Für alles, was nicht grafisch ist, existieren neuere Sprachen wie CUDA, um auf die GPU zuzugreifen.

Während die eigentlichen Stärken des GL im 3D-Szenen-Rendering liegen, wird es oft auch für 2D-Manipulation oder Komposition verwendet. Der Grund ist, dass 2D-Beschleunigungsarchitekturen von Grafikkarten oft nicht die Leistung (Freiheit) oder Leistung von GL erreichen. Aus diesem Grund wird der GL manchmal für Videoausgabe (hauptsächlich Skalierung) oder Blending-Aufgaben verwendet, selbst wenn für diese Aufgaben eine spezifische 2D-Beschleunigung verfügbar wäre. Mac OS X ist ein prominentes Beispiel für einen ganzen Desktop (optional), der über GL gerendert wird, um ansprechende Effekte ohne hohe CPU-Last zu ermöglichen. Es kann aber auch zum Beispiel verwendet werden, um Anti-Alias-Text-Glyphen auf einen strukturierten Hintergrund zu mischen.

Sobald Sie eine grafische, leistungskritische Aufgabe ausführen, möchten Sie wahrscheinlich, dass die GPU hilft (möglich, auch wenn Sie nicht auf dem Bildschirm zeichnen) und dann OpenGL ist die saubere, standardisierte, plattformübergreifende Antwort auf deine Bedürfnisse. Die heutigen GUI-Toolkits bieten meist kein GPU-beschleunigtes Zeichnen, sondern die Einbindung von GL-Rendering in ihre Widgets. So können Sie sie für die UI-Zeichnung verwenden und Ihre leistungskritischen Echtzeitgrafiken dort einfügen, wo es Ihnen passt. Es ist ein Problem, eine ganze Benutzeroberfläche in GL zu erstellen, aber dafür gibt es auch Lösungen (typische Anwendungsfälle sind Spiele mit In-Game-UI).

+0

Warum ist 2D Beschleunigung normalerweise langsamer? Wäre es nicht sinnvoll, wenn die Dinge mit nur 2 Achsen schneller laufen würden? – mk12

+1

Erstens sind die meisten zusätzlichen Operationen in 3D, wie die komplizierteren Matrixoperationen, grundsätzlich in Hardware implementiert, daher sind sie im Vergleich zu einfacheren 2D-Operationen "kostenlos". Die Zeichnung selbst wird dann für beide Fälle in 2D erstellt (siehe Scanline-Algorithmus). Zweitens ist die 3D-Beschleunigung in der Regel schneller, da die GPU-Anbieter viel mehr Aufwand in die Optimierung der Treiber für GL und DirectX als für die 2D-Hardwarebeschleunigung investieren. speziell für andere Plattformen als Windows. Die meisten GPU-Benchmarks sind 3D-Gaming-Benchmarks. Dort findet der Wettbewerb auf dem Markt statt. – ypnos

15

Es ist etwas grundlegender. Mit OpenGL können Sie Zeichnungen auf niedriger Ebene ausführen (denken Sie an "Zeichnen Sie hier eine Linie von hier nach hier" anstatt "eine Schaltfläche zu zeichnen"). OpenGL-Operationen sind oft hardwarebeschleunigt und daher sehr effizient, und die OpenGL-API ermöglicht Ihnen die einfache Arbeit mit 3D. Die Auswahl zwischen OpenGL und einem GUI-Toolkit wie QT oder GTK hängt davon ab, ob Sie versuchen, UI-Elemente für Ihre Anwendung zu zeichnen, oder ob Sie genau steuern möchten, wie Ihre Grafiken gezeichnet werden.

Manchmal verwenden GUI Toolkits OpenGL unter den Abdeckungen, um ihre Bildschirmelemente zu zeichnen.

6

OpenGL ist eine Grafik-API, auf der komplexere benutzerorientierte Grafikbibliotheken erstellt werden. Wenn Sie sich für Grafik-Entwicklung und insbesondere für 3D-Grafik interessieren, lohnt es sich, sie kennenzulernen. Es ist ein außergewöhnlich leistungsstarkes System, das von der Erstellung einer Linie bis hin zu Render-Quake alles für das fotorealistische atmosphärische Rendering benötigt.

Ihr Ausgangspunkt für alle Dinge OpenGL bezogenen ist OpenGL.org, die Links zu allem, was Sie brauchen.

Wenn Sie ein Lehrbuch bevorzugen, und das ist keine schlechte Idee mit OpenGL, dann ist der endgültige Text "The OpenGL Programming Guide", umgangssprachlich bekannt als "The Red Book" wegen seiner Abdeckung.Vielleicht möchten Sie dies durch 'OpenGL Shading Language' (oder das Orange Book) ergänzen, die das tut, was es sagt.

Eines der schönen Dinge an OpenGL ist, dass es ein einfaches Test-Toolkit gibt - GLUT - das in den meisten Sprachen mit Bindings implementiert wurde und außerordentlich einfach zum Experimentieren und zum Herumhacken ist.

So gehen Sie zum Rendern Ihrer Teekanne!

4

GTK, QT, MFC, wxwidget usw. sind Toolkits zum Fenstern - sie bieten Steuerelemente wie Dialogfelder, Widgets, Schaltflächen usw., um GUI-Apps zu erstellen.

Eines der Steuerelemente, die sie normalerweise liefern, ist ein Canvas, auf dem Sie mit Grafikbefehlen (Drawline, Draw Circle usw.) zeichnen können. Sie liefern wahrscheinlich auch eine OpenGL-Zeichenfläche, auf die Sie mit OpenGL-Befehlen zurückgreifen können.

OpenGL (in einfachen Worten) ist eine Sprache für die Anzeige von 3D-Objekten, es ist sehr leistungsfähig, plattformübergreifend und etwas kompliziert (vor allem wenn Ihre Mathematik schwach ist!) ABER es ist viel besser als zu versuchen, etwas von diesem 3D zu tun sich vollfressen! Es kann manchmal frustrierend sein, besonders wenn Sie etwas falsch machen und es nur einen leeren Bildschirm zeichnet.

Um die Dinge etwas komplexer zu machen, gibt es auch in OpenGL geschriebene Toolkits, wo OpenGL eine Reihe von Schaltflächen, Dialogen usw. in der Szene bietet UND es gibt Zeiten, in denen (hinter den Kulissen) alle GUI Elemente von etwas benutzt werden wie QT werden von OpenGL gezeichnet!

Verwandte Themen