Warum sind SDL und OpenGL verwandt?

Lesezeit: 3 Minuten

Benutzeravatar von Devan Buggay
Devan Buggay

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)?

  • 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


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

Benutzeravatar von karlphillip
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.

Benutzeravatar von Nick Zalutskiy
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. 🙂

1412570cookie-checkWarum sind SDL und OpenGL verwandt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy