Ich habe mit SDL herumgespielt und herausgefunden, dass Sie Bilder mit SDL nicht drehen können. Überall, wo die Frage gestellt wurde, sagten die Leute, sie sollten OpenGL verwenden, um Rotationen durchzuführen. Ich dachte immer, dass SDL völlig unabhängig von OpenGL ist, liege ich falsch, wenn ich das denke? Ich habe sogar Tutorials zur Verwendung von OpenGL in SDL gefunden, was mich noch mehr verwirrte. Was genau ist die Beziehung zwischen SDL und OpenGL? Warum nicht einfach OpenGL verwenden, wenn es leistungsfähiger ist und Sie mehr tun können (dies ist das, was ich gelesen habe)?
Warum sind SDL und OpenGL verwandt?
Devan Buggay
SDL ist eine Schicht über OpenGL; Tatsächlich verwendet es GDI unter Windows standardmäßig und hat auch ein DirectX-Backend. Die Leute sagen wahrscheinlich, dass Sie OpenGL verwenden können, um die Einschränkungen von SDL zu umgehen auf Plattformen, die standardmäßig OpenGL verwenden (ähm, Linux), weil die Abstraktion auf höherer Ebene diese Funktionalität nicht verfügbar macht. Dann ist Ihr Code jedoch “weniger” auf Windows portierbar (oder zumindest auf Windows, das das GDI-Backend verwendet).
Außerdem macht SDL neben Grafik noch viele andere Dinge – Audio, Eingabe usw., die OpenGL nicht kann.
-
Gibt es Beweise in der Dokumentation oder anderswo über die Verwendung von GDI durch SDL unter Windows?
– SerG
2. Januar 2014 um 12:48 Uhr
-
Wikipedia gibt an, dass GDI das Standard-Backend für Windows im Abschnitt „Ports“ ist.
– J Trana
2. Januar 2014 um 22:44 Uhr
Karl Philipp
SDL ist eine plattformübergreifende Multimediabibliothek, die entwickelt wurde, um Low-Level-Zugriff auf Audio, Tastatur, Maus, Joystick usw. zu ermöglichen. Sie unterstützt auch 3D-Hardware über OpenGL.
OpenGL ist eine Standardspezifikation, die eine sprach- und plattformübergreifende API zum Schreiben von Anwendungen definiert, die 2D- und 3D-Computergrafiken erzeugen. Die Schnittstelle besteht aus über 250 verschiedenen Funktionsaufrufen, mit denen komplexe dreidimensionale Szenen aus einfachen Grundelementen gezeichnet werden können. OpenGL wurde 1992 von Silicon Graphics Inc. (SGI) entwickelt[4] und ist weit verbreitet in CAD, virtueller Realität, wissenschaftlicher Visualisierung, Informationsvisualisierung und Flugsimulation. Es wird auch in Videospielen verwendet, wo es mit Direct3D auf Microsoft Windows-Plattformen konkurriert (siehe OpenGL vs. Direct3D).
-
Ich glaube, die Schlüsselfrage, die es hier zu beantworten gilt, lautet: „Was genau ist die Beziehung zwischen SDL und OpenGL?“ Vom Standpunkt eines Anfängers aus sind Lehrbuchdefinitionen der beiden Technologien wahrscheinlich verwirrend.
– Jason Doucette
30. Dezember 2018 um 9:05 Uhr
SDL verwendet OpenGL als Hardware-Renderer für Inhalte, die auf einigen Plattformen Hardware-Rendering erfordern. Wenn Sie über eine solche Plattform verfügen, ist OpenGL die zugrunde liegende API, über die SDL eine Abstraktion darstellt.
Zu deinem Beispiel zum Drehen von Grafiken: Es ist besser, es mit OpenGL (dh Hardware-beschleunigt) zu machen als mit SDL selbst (dh auf der CPU), weil es im Allgemeinen rechenintensiv ist (insbesondere, wenn du viele Bitmaps hast, um jeden Frame zu drehen und Sie möchten, dass der Effekt glatt ist).
Nichts (außer der Vernunft) hält Sie jedoch davon ab, das SDL_gfx-Paket zu verwenden, das das Modul SDL_rotozoom enthält, das für das Drehen und Skalieren von Bitmaps verantwortlich ist.
SDL verarbeitet die Eingabe, die Fenstererstellung, das Laden von Bildern und mehrere andere Funktionen, die OpenGL nicht verarbeitet.
Nick Zalutsky
Wie viele Leute gesagt haben. SDL übernimmt mehr als nur das Rendern. Neben der Handhabung von Audio, Eingabe und all den anderen netten Dingen vereinfacht es die Verwendung von Grafiken, indem es Ihnen Zugriff auf viele Funktionen gibt, die Sie sonst selbst implementieren müssten.
Also ja, SDL ist eine Abstraktionsschicht über OpenGL. Sie können weiterhin in Ihrer Anwendung auf OpenGL zugreifen und somit dessen volle Leistungsfähigkeit nutzen.
Eine einfache Ergänzung, da Sie anscheinend neu in dieser Art von API sind: Wenn Sie eine API wünschen, die SDL ähnlich ist (für 2D-Grafiken), kann ich Ihnen empfehlen, einen Blick auf zu werfen SFML. Es basiert auf C++ statt auf C und hat Funktionen für Dinge wie Rotation. Es basiert auch auf OpenGL. 🙂
So drehen Sie eine bestimmte Frage: stackoverflow.com/questions/30198713/… kann jetzt durchgeführt werden, aber erweiterte Effekte sind nicht möglich. SDL + OpenGL-Minimalbeispiel unter: stackoverflow.com/questions/40061276/…
– Ciro Santilli OurBigBook.com
22. November 2017 um 22:31 Uhr