Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.08.2016, 21:29

[C++ | SFML | SDL2] SDL2 und SFML in dem selben Projekt?

Hallo Spieleprogrammierer Community,

ich hätte eine Frage bezüglich der Verwendung von SFML und SDL2 in dem selben Projekt. Ich möchte beide für unterschiedliche Bereiche des Programmes verwenden.
Ich würde gerne lediglich die Audio Komponenten von SFML nutzen und für den Rest SDL2 verwenden (ich bin mir bewusst, dass es den SDL mixer gibt, dieser ist für mein Projekt allerdings unzureichend).

Da ich noch nicht häufig mit unterschiedlichen Libraries gearbeitet habe kommt für mich die Frage auf, ob ich beim Einbinden dieser auf Probleme stoßen könnte?
Wie genau habe ich SFML in mein Projekt einzubinden, wenn ich bereits SDL2 nutze?

(1) - Ist die Reihenfolge in welcher z.B. der Dateipfad für die Libraries angegeben wird von bedeutung? Macht es einen Unterschied, ob SDL2 zuerst eingebunden wird, oder nicht? Worauf ich hinaus möchte ist, ob die Reihenfolge der Dateipfade eine "load order" darstellt, sodass z.B. "Library Bonus" nach "Librarie Core" angegeben werden muss?

(1.5) - Falls die Reihenfolge einen unterschied macht, in welcher Reihenfolge habe ich SFML und SDL2 einzufügen?

(2) - Können Libraries im "Konflikt" zueinander stehen? SDL2 und SFML erfüllen in vielerlei Hinsicht ähnliche Funktionen. Ich möchte hierbei nochmal erwähnen, dass ich nicht SFML nutzen möchte um z.B. in mein von SDL2 erstelltes Fenster zu rendern, sondern SDL2, sowie SFML für zwei komplett unterschiedliche Aspekte verwendet werden. Allerdings bietet SFML nunmal Funktionen, welche sich mit denen von SDL2 überschneiden. Kann dies bereits beim erstellen des Programmes zu einem Problem werden, auch wenn die sich überschneidenden Funktionen nie verwendet werden?

(3) - Gibt es sonst irgendwelche Probleme auf die ich stoßen könnte, welche ich hier noch nicht bedacht habe?

Danke im Voraus

Lg

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

03.08.2016, 21:47

Was schätzt du wie lange du für diesen Beitrag gebraucht hast. Vorschlag meinerseits. Versuch doch einfach mal ein Projekt zu erstellen und beides einzubinden. Das geht vermutlich viel viel schneller.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

04.08.2016, 06:35

Wenn du eh schon mit SFML hantierst, würde ich dir einfach raten SDL komplett wegzuwerfen. Wie ich erst kürzlich erschreckt feststellen musste, ist die SDL scheinbar stark limitiert, was Rendering anbelangt. Ich kann mir nicht vorstellen, warum man zum Rendern SDL verwenden wollen würde. Der einzige (aus meiner Sicht schlechte) Grund wäre der, dass man SDL kennt und SFML nicht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

04.08.2016, 13:53

Zitat

Vorschlag meinerseits. Versuch doch einfach mal ein Projekt zu erstellen und beides einzubinden. Das geht vermutlich viel viel schneller.


Leider hatte / habe ich nicht die Möglichkeit das bis heute Abend selbst auszuprobieren. Dem entnehme ich allerdings, dass ich mir wahrscheinlich zu viele Gedanken zu einem trivialen Problem gemacht habe.

Zitat

Wenn du eh schon mit SFML hantierst, würde ich dir einfach raten SDL komplett wegzuwerfen. Wie ich erst kürzlich erschreckt feststellen musste, ist die SDL scheinbar stark limitiert, was Rendering anbelangt.


Für mein Projekt wird SDL mit Sicherheit vollkommen ausreichen. Für zukünftige Projekte interessiert mich allerdings, welche Vorteile du in SFML siehst, die SDL nicht bietet?

Zitat

Ich kann mir nicht vorstellen, warum man zum Rendern SDL verwenden wollen würde.


SFML unterstützt meines wissens nach immer noch nicht offiziell Android / iOS. Für SDL2 gibt es hingegen offiziellen Android und iOS support, sowie umfangreiche Tutorials, welche den Einstieg erleichtern.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

04.08.2016, 14:31

Für zukünftige Projekte interessiert mich allerdings, welche Vorteile du in SFML siehst, die SDL nicht bietet?
Sprites skalieren und drehen zum Beispiel. Siehe auch: relative Größe von 2D Grafiken in SDL?! Das ist leider ein sehr zentrales Thema, wenn man bedenkt, dass Smartphones Auflösungen von 320x200 bis 2560x1800 haben in diversen Schritten dazwischen und gefühlt unendlich vielen Seitenverhältnissen.

SFML unterstützt meines wissens nach immer noch nicht offiziell Android / iOS.
Offiziell ist der Support nicht, das ist richtig. Es geht dennoch auf beiden Plattformen und es gibt auch Beispiel-Projekte dafür.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

04.08.2016, 14:51

Zitat

Sprites skalieren und drehen zum Beispiel. Siehe auch: relative Größe von 2D Grafiken in SDL?! Das ist leider ein sehr zentrales Thema, wenn man bedenkt, dass Smartphones Auflösungen von 320x200 bis 2560x1800 haben in diversen Schritten dazwischen und gefühlt unendlich vielen Seitenverhältnissen.


Müsste die Funktion SDL_RenderSetLogicalSize dieses Problem nicht lösen? Sofern das Ziel ist, dass Spiel für nur eine Auflösung zu programmieren und SDL automatisch die Texturen an die Auflösung des Bildschirmes anpassen soll wäre SDL_RenderSetLogicalSize wahrscheinlich die gewünschte Funktion.
Das einzige Problem welches ich mit ihr hatte war, als ich eine geringere Auflösung als die meines Bildschirmes verwenden wollte. Dann hat SDL praktisch immer tatsächlich "rein gezoomt", sodass auch mein zweiter Monitor davon beeinflusst wurde.
Sofern man allerdings nur einen Monitor hat (wie z.B. im Falle eines Handys - allerdings muss ich hier gestehen, dass ich die Funktion noch nicht mit einem Handy ausprobiert habe) dürfte man keine Probleme haben.
Für alle anderen Fälle sollte man nach möglichkeit eine höhere Auflösung nehmen, um dem "Zoom Problem" entgegen zu wirken.

Abgesehen davon zur Ursprünglichen Frage zurück. Verstehe ich das richtig, dass ich mit mehrere Libraries grundsätzlich kein Problem haben sollte und aus einer Mücke einen Elefanten gemacht habe?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

04.08.2016, 15:05

SFML hat zusätzlich den Vorteil dass es C++ ist und nicht C. Das merkst du dann vor allem daran wie du das ganze verwendest. Ich würde mir das einfach mal ansehen. So groß ist die Einarbeitungszeit nicht.

Abgesehen davon zur Ursprünglichen Frage zurück. Verstehe ich das richtig, dass ich mit mehrere Libraries grundsätzlich kein Problem haben sollte und aus einer Mücke einen Elefanten gemacht habe?

Mehrere Bibliotheken einzubinden ist erst mal kein Problem. An sich wirst du bei vielen Projekten mehrere Bibliotheken einbinden wollen, das ist also an sich eine normale Anforderung. Du musst halt gucken wie du die Module die du nutzen möchtest initialisieren kannst. Was du vor hast wird hier vermutlich noch niemand gemacht/getestet haben. Von daher würde ich halt vorschlagen erst mal zu testen. An sich ist das allgemein keine schlechte Idee einfach erst mal selbst zu probieren und dann wenn wirklich Probleme auftreten weiter danach zu forschen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

8

04.08.2016, 15:17

Zitat

SFML hat zusätzlich den Vorteil dass es C++ ist und nicht C. Das merkst du dann vor allem daran wie du das ganze verwendest. Ich würde mir das einfach mal ansehen. So groß ist die Einarbeitungszeit nicht.


Da ich SFML sowieso für den Audio Part meines Projektes verwenden möchte spricht erstmal nichts dagegen sich dabei auch etwas genauer die anderen Aspekte von SFML anzuschauen.

Zitat

Mehrere Bibliotheken einzubinden ist erst mal kein Problem. An sich wirst du bei vielen Projekten mehrere Bibliotheken einbinden wollen, das ist also an sich eine normale Anforderung. Du musst halt gucken wie du die Module die du nutzen möchtest initialisieren kannst. Was du vor hast wird hier vermutlich noch niemand gemacht/getestet haben. Von daher würde ich halt vorschlagen erst mal zu testen. An sich ist das allgemein keine schlechte Idee einfach erst mal selbst zu probieren und dann wenn wirklich Probleme auftreten weiter danach zu forschen.


Wie erwähnt hatte ich noch nicht die möglichkeit gehabt es für mich selbst zu testen, deswegen wollte ich vorab einige Fragen klären, um mögliche Stolpersteine bereits aus dem Weg zu räumen.
Scheinbar sollte ich aber nicht auf Probleme stoßen. Falls doch etwas sein sollte, werde ich mich melden.

An dieser stelle nochmals danke für eure Hilfe :).

Werbeanzeige