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

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

31

05.08.2012, 17:02

Naja ich sehe jetzt nicht wieso das dies komisch sein soll, für Anfänger ist SFML schlicht einfach zu verstehen als DirectX, oder wieso ist das für dich komisch?

Weil DX wesentlich mächtiger ist als die SFML.
Natürlich für einen Anfänger ungeeigneter, jedenfalls sofern er sich nicht explizit damit beschäftigen will, was ja aber der TE wollte. Daher ist es in einer solchen Situation ungünstig, DX und die WinAPI als "grottig" abzustempeln und das Vorhaben "beschränkt" zu nennen.
Deine persönliche Meinung, dass es mit der SFML leichter gewesen _wäre_ hätte man ja immer noch schreiben können. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

32

05.08.2012, 17:37

Natürlich für einen Anfänger ungeeigneter, jedenfalls sofern er sich nicht explizit damit beschäftigen will, was ja aber der TE wollte.

Naja als Anfänger ist meiner Meinung nach grundlegend falsch direkt auf die mächtigsten Tools loszurennen (würde einer Person mit starkem interesse am Bergwandern/Klettern nicht empfehl als erstes den Mount Everest zu besteigen), darum hatte ich SFML empfohlen und von seinen grossen Ideen abgeraten. Wenn man sich dann mit SFML und C++ sehr vertraut ist, kann man SFML weiter nutzen für die Window Erstellung, Sound und Networking, während man für die Grafik zum nächst mächtigeren Tool greifen kann - OpenGL. Ich finde diesen Weg wesentlich einfacher als sich direkt in die meiner Meinung nach schlechten DirectX und Win API zu stürtzen und erst einmal Tage/Wochen lang mit der ganzen "Logik" hinter diesen APIs zu vergeuden. ;)
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

33

05.08.2012, 18:14

Inwiefern beschränkt man da deiner Meinung nach seinen Horizont? Was gibt es denn für weniger horizontbeschränkende Alternativen und wieso?

Naja beschränken ist nicht so ein beliebtes Wort, obwohl es auf eine gewisse Weise das Gleiche bedeutet, kann man es auch schöner ausdrücken mit spezialisieren. Wenn man sich tief gründige mit Schnittstellen für eine spezifische Platform beschäftigt, lässt man kein Raum für andere Möglichkeiten für andere Platformen. Mit einer Schnittstelle, welche Crossplatform mässig entwickelt wurde, stehen einem von Anfang an viel mehr Möglichkeiten offen.

Wenn man für eine Plattform entwickeln will, dann muss man sich eben mit dieser Plattform beschäftigen!? Wenn ich mich mit tiefgründig mit Plattform A beschäftige, dann heißt das noch lange nicht, dass ich mich nicht auch tiefgründig mit Plattform B beschäftigen kann!? Die low-level Grafik API der Wahl unter Windows ist nunmal Direct3D. Auf anderen Plattformen ist es OpenGL. Und auf wieder anderen Plattformen ist es wieder was anderes...

Was Direct3D vs. OpenGL betrifft: Wenn man eine der beiden APIs beherrscht, dann ist es sehr leicht die andere zu lernen, wobei der Weg von D3D nach OpenGL wohl potentiell etwas leichter fällt.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (05.08.2012, 18:23)


FSA

Community-Fossil

  • Private Nachricht senden

34

05.08.2012, 18:34

@Dot: Ich "spreche" Direct3D und habe vor kurzem OpenGL angeguckt. Ich muss sagen OpenGL versteh ich fast garnicht. Wie kommst du darauf, dass DX->OGL leichter ist? Ohne OGL zu beherrschen würde ich auf die andere Richtung tippen.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

35

05.08.2012, 19:20

Wenn man für eine Plattform entwickeln will, dann muss man sich eben mit dieser Plattform beschäftigen!? Wenn ich mich mit tiefgründig mit Plattform A beschäftige, dann heißt das noch lange nicht, dass ich mich nicht auch tiefgründig mit Plattform B beschäftigen kann!? Die low-level Grafik API der Wahl unter Windows ist nunmal Direct3D. Auf anderen Plattformen ist es OpenGL. Und auf wieder anderen Plattformen ist es wieder was anderes...

Nicht wenn man sich mit Platform übergreiffenden Libraries arbeitet, wie z.B. OpenGL. Ich sehe nicht wieso man um auf Windows zu programmieren DirectX verwenden muss. OpenGL läuft genau so gut und ist genau so "low-level". Weiter hat der TE nicht erwähnt, dass er sich auf eine Platform spezialisieren will und für den Anfang ist eine low-level API einfach nicht empfehlenswert (meiner Meinung nach).

Was Direct3D vs. OpenGL betrifft: Wenn man eine der beiden APIs beherrscht, dann ist es sehr leicht die andere zu lernen, wobei der Weg von D3D nach OpenGL wohl potentiell etwas leichter fällt.

Klar je mehr Erfahrung man hat mit Programmieren und mit der Logik und dem mathematischen Part desto einfacher wird es zwischen verschiedenen APIs hin und her zu switchen, aber wenn man die Wahl hat eine API zu verwenden, welche auf den meisten Platformen (Windows, Linux, Mac, Android (mit Einschränkungen)) läuft (d.h. OpenGL) und einer Library welche auf eine Platform fixiert ist, einem jedoch evtl. etwas mehr Spielraum auf dieser Platform bieten könnte (d.h. Direct3D), dann würde ich immer noch OpenGL wählen.

Das ist mal nur wieder meine Meinung und du darfst ruhig bei DirectX/Direct3D bleiben, ich werde jedoch auch weiter SFML und später OpenGL empfehlen. :)
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

36

05.08.2012, 23:22

@Dot: Ich "spreche" Direct3D und habe vor kurzem OpenGL angeguckt. Ich muss sagen OpenGL versteh ich fast garnicht. Wie kommst du darauf, dass DX->OGL leichter ist? Ohne OGL zu beherrschen würde ich auf die andere Richtung tippen.

Direct3D spiegelt die darunterliegende Hardware wesentlich schärfer wider und zwingt einen von vornherein dazu, die Dinge einigermaßen "richtig" zu machen, während OpenGL voller potentieller Irrwege ist und Information darüber großteils veraltet oder sogar widersprüchlich sind. Mit OpenGL ist es vielleicht auf den ersten Blick sehr viel leichter, irgendwas auf den Bildschirm zu bekommen. Der leichte Weg ist nur leider eine Sackgasse. "Richtiges" OpenGL ist dagegen mehr oder weniger isomorph zu Direct3D. Jemand, der mit OpenGL ein rotierendes Dreieck hinbekommt, wird also mit Direct3D möglicherweise Schwierigkeiten haben (vor allem wenn er sein Wissen aus vielen der hoffnungslos veralteten aber leider immer noch populären Tutorials wie z.B. NeHe hat), da er alles nochmal und diesmal "richtig" lernen muss, während jemand, der Direct3D beherrscht, sein Wissen 1:1 nach OpenGL übertragen kann.
Ich hab jedenfalls die Erfahrung gemacht, dass man mit soliden Direct3D Kenntnissen schon rein mit Hilfe von google und der OpenGL Doku praktisch sofort auch OpenGL programmieren kann. Umgekehrt stell ich mir das schwerer vor...

Wenn man für eine Plattform entwickeln will, dann muss man sich eben mit dieser Plattform beschäftigen!? Wenn ich mich mit tiefgründig mit Plattform A beschäftige, dann heißt das noch lange nicht, dass ich mich nicht auch tiefgründig mit Plattform B beschäftigen kann!? Die low-level Grafik API der Wahl unter Windows ist nunmal Direct3D. Auf anderen Plattformen ist es OpenGL. Und auf wieder anderen Plattformen ist es wieder was anderes...

Nicht wenn man sich mit Platform übergreiffenden Libraries arbeitet, wie z.B. OpenGL.

OpenGL ist keine Library sondern eine Spezifikation und die jeweilige Implementierung der OpenGL Spezifikation ist plattformspezifisch. Der eigentliche Rendering Code ist also soweit portabel, soweit man tatsächlich den selben Renderpfad auf unterschiedlichen Plattformen verwenden kann (auf PCs einer bestimmten Leistungsklasse werd ich völlig anderen Code haben als auf Tablets oder Smartphones). Das ganze Drumherum ist allerdings absolut nicht portabel. Natürlich kann man da Libraries wie GLUT, GLFW etc. benutzen. Ich kenn allerdings leider keine derartige Library, die ich in einem ernsthaften Projekt würde verwenden wollen.
Dass OpenGL Code einmal geschrieben wird und dann auf jeder Plattform das optimale Ergebnis erzielt, ist imo (von trivialen Anwendungen abgesehen) jedenfalls völlige Utopie. Abgesehen davon, sollte man bedenken, dass man für einige (teilweise wesentliche) Dinge (z.B. Shader Buffer Loads) auf herstellerspezifische Extensions angewiesen ist.

Ich sehe nicht wieso man um auf Windows zu programmieren DirectX verwenden muss. OpenGL läuft genau so gut und ist genau so "low-level".

Theoretisch ja, praktisch ist der OpenGL Support mancher Grafikkartenhersteller (Intel...) teilweise immer noch alles andere als toll, die Integration von OpenGL ins System unter Windows vergleichsweise schrecklich und die Tatsache, dass OpenGL in Windows 8 auf Desktopanwendungen beschränkt ist, halte ich für kein gutes Omen...

Das ist mal nur wieder meine Meinung und du darfst ruhig bei DirectX/Direct3D bleiben, ich werde jedoch auch weiter SFML und später OpenGL empfehlen. :)

Der Weg über SFML nach OpenGL ist sicherlich eine gute Empfehlung für Anfänger, da stimm ich dir voll zu. Trotzdem versteh ich immer noch nicht, wieso OpenGL deiner Meinung nach im Gegensatz zu Direct3D dermaßen horizonterweiternd sein soll. Das ist wie zu sagen, dass jemand, der blaue Hemden trägt, einen beschränkteren Horizont hat als jemand, der rosa Hemden trägt, weil man rosa zu mehr Anlässen tragen kann als blau...
Deine Meinung, dass Direct3D "die schlimmste Library" ist, darfst du von mir aus gerne haben. Ich vermute aber, dass diese Meinung nicht auf tatsächlicher, persönlicher Erfahrung basiert. Zumindest auf rein technischer Ebene kann ich das jedenfalls absolut nicht nachvollziehen, da weist OpenGL imo wesentlich schwerwiegendere Mängel auf (die letzte Diskussion dazu findest du hier).

Dieser Beitrag wurde bereits 18 mal editiert, zuletzt von »dot« (06.08.2012, 00:06)


Werbeanzeige