Warum ist OpenGL unter Windows so unbekannt?



  • Und warum sind Threads eklig oder unschön? Noch dazu wo es MultiCore Prozessoren gibt? Ich verstehe Dein Argument nicht so wirklich. Das hat aber alles nichts mit OpenGL zu tun. OpenGL ist genauso fähig den Job zu erledigen wie DirectX und auch in der schönen DirectX Welt gibt es Threads ;).

    Netzwerk gehört zu einer Grafikschnittstelle nun imho auch nicht gerade dazu. Dass DirectX das mit DirectPlay anbietet ist mir bekannt, aber wird das heutzutage noch ernsthaft genutzt? Hab von DirectX ehrlich gesagt nicht sooo viel Ahnung, aber ich fand bisher OpenGL immer elegant genug um meinen Spaß damit zu haben.
    rya.



  • scorcher24@public.pc schrieb:

    Und warum sind Threads eklig oder unschön?

    Weil sie gewisse Probleme mit sich bringen. Wenn man mit Threads programmiert muss man immer aufpassen, dass man sich nicht den Speicher kaputt macht.

    scorcher24@public.pc schrieb:

    Noch dazu wo es MultiCore Prozessoren gibt?

    Bei einem solchen Einsatzzweck kannst du aber aus einem MultiCore System nicht wirklich Profit schlagen. Da muss man schon etwas mehr investieren.

    scorcher24@public.pc schrieb:

    Ich verstehe Dein Argument nicht so wirklich. Das hat aber alles nichts mit OpenGL zu tun. OpenGL ist genauso fähig den Job zu erledigen wie DirectX und auch in der schönen DirectX Welt gibt es Threads ;).

    Wie Direct3D, ja. Ich sage ja nicht, dass DirectX toll ist. Ich sage nur, wo ich im Moment ein Problem mit OpenGL, bzw. genauer mit der SDL habe. Und ich habe keine plattformunabhängige Bibliothek gefunden, die genau das tut, was ich will...

    Wenn ich wollte, könnte ich ja auch den kompletten Main-Loop selber schreiben. Das würde ja genau so gehen, wie ich es gerne hätte. Aber ich habe auch keine Lust, mich in plattformspezifischen Details zu verstricken.

    Und genau das ist der Nachteil, wenn deine Bibliotheken nicht so gut aufeinander abgestimmt sind.

    scorcher24@public.pc schrieb:

    Netzwerk gehört zu einer Grafikschnittstelle nun imho auch nicht gerade dazu.

    Nicht? Wäre ich jetzt nicht drauf gekommen. Aber darum ging es auch garnicht. Sondern um die Dinge, die du für ein Spiel brauchst.



  • ProgChild schrieb:

    Jetzt habe ich ein blockierendes select und einen Blockierenden SDL main Loop.

    Dann nimm doch etwas nicht-blockierendes. Mit SDL hatte ich bisher keine Probleme. Wenn dir die Bibliothek nicht zusagt, dann probiere doch mal http://www.sfml-dev.org/ .



  • knivil schrieb:

    ProgChild schrieb:

    Jetzt habe ich ein blockierendes select und einen Blockierenden SDL main Loop.

    Dann nimm doch etwas nicht-blockierendes.

    Ebenfalls ein unschöner Workaround.

    knivil schrieb:

    Mit SDL hatte ich bisher keine Probleme. Wenn dir die Bibliothek nicht zusagt, dann probiere doch mal http://www.sfml-dev.org/ .

    Ich benutzte die SDL, weil ich sie schon für die beste der Möglichkeiten halte.



  • ProgChild schrieb:

    Ich benutzte die SDL, weil ich sie schon für die beste der Möglichkeiten halte.

    Im Bezug auf was?

    Ich habe früher auch die SDL benutzt, und bin der Meinung, in SFML ist vieles besser und intuitiver gelöst. Zumindest die Teile, die ich von SDL her kannte (hauptsächlich Grafik-Modul).



  • Nexus schrieb:

    ProgChild schrieb:

    Ich benutzte die SDL, weil ich sie schon für die beste der Möglichkeiten halte.

    Im Bezug auf was?

    Im Bezug auf das, was ich vor habe.

    Nexus schrieb:

    Ich habe früher auch die SDL benutzt, und bin der Meinung, in SFML ist vieles besser und intuitiver gelöst. Zumindest die Teile, die ich von SDL her kannte (hauptsächlich Grafik-Modul).

    Ich brauche eigentlich nur ein möglichst leichtgewichtige Initialisierung von OpenGL, Tastatur, Maus, Joystick, Sound und IO Multiplexing. SFML tut mir da an manchen Stellen schon zu viel.



  • @ProgChild: Also alles ist irgendwie unschoen? Vielleicht ist dein Design einfach nur schlecht!

    Weil sie gewisse Probleme mit sich bringen. Wenn man mit Threads programmiert muss man immer aufpassen, dass man sich nicht den Speicher kaputt macht.

    Keine Ahnung, was du damit meinst. Ist mir noch nie passiert.



  • knivil schrieb:

    @ProgChild: Also alles ist irgendwie unschoen?

    Ja. Ich hätte gerne einen Main-Loop, der auf alle Events reagiert. Und zwar in einem Thread.

    knivil schrieb:

    [...]

    Erspare mir einfach deine Arroganz, ok?



  • Ja. Ich hätte gerne einen Main-Loop, der auf alle Events reagiert. Und zwar in einem Thread.

    Nee, ist unschoen. 😃 Auch widersprichst du dir selbst:

    Und das ist dann meistens unschön, weil sich diese Bibliotheken irgendwie einen "Main-Loop" teilen müssen, um ihre IO-Aufgaben zu erledigen.

    Auch stimmt das nicht, dass sich alle einen MainLoop/Thread teilen muessen. Aber vor Threads hast du ja auch irgendwie Angst. Alles wird mit unschoen oder eklig abgeschmettert, gepaart mit vagen Anforderungen a la "ich haette gern, dass SDL ... aber SFML macht mir da schon etwas zu viel". Ich schaue mir meine Programme mit SDL an und kann keinen deiner vagen Punkte ansatzweise nachvollziehen. Am besten du laesst den Rechner aus, dann hast du nichts unschoenes oder ekelhaftes.

    Ich koennte jetzt sowas wie: "Erspare mir deine Ignoranz, ok?" oder anderes erwidern. Aber wo wuerde das hinfuehren ...



  • Wegen der MainLoop-Problematik benutze ich äußerst ungern irgendwelche Bibliotheken, die einen Blackbox-MainLoop haben. Da schreibe ich meinen MainLoop lieber selber. ^^
    Für OpenGL benutze ich da GLX, für Tastatur/Maus XCB und für den Sound libao. :3



  • knivil schrieb:

    Auch widersprichst du dir selbst

    Nein. Ich habe mich nur möglicherweise für dich missverständlich ausgedrückt. Aber das letzte Zitat scheinst du ja dann doch noch richtig verstanden zu haben.

    knivil schrieb:

    Aber vor Threads hast du ja auch irgendwie Angst.

    Nein. Ich finde es nur nicht schön, wenn ich sie verwenden muss, um Limitierungen in bestimmten Bibliotheken zu umgehen.

    Und da Threads ihre eigenen Probleme mitbringen, setze ich sie ein, wo ich die Nachteile für gerechtfertigt halte.

    knivil schrieb:

    SFML

    Wo bietet mir die SFML denn die Möglichkeit, über IO-Events benachrichtigt zu werden?

    knivil schrieb:

    Am besten du laesst den Rechner aus, dann hast du nichts unschoenes oder ekelhaftes.

    Du kannst ja gerne qualifizierte Dinge von dir geben. Ich sehe hier aber ehrlich gesagt keinen Grund, warum du hier persönlich Diffamierungen loslassen musst.

    Wenn mir dein Vorschlag nicht gefällt, dann akzeptiere das doch einfach. Ich habe ziemlich genau dargelegt, was ich will. Vielleicht kannst du ja nachvollziehen, dass so Tipps wie "Das was du willst ist aber Blödsinn, machst doch anders" nicht unbedingt gut ankommen.



  • du hier persönlich Diffamierungen loslassen musst

    Ich liebe die Zitierfunktion:

    Erspare mir einfach deine Arroganz, ok?

    Genau dazu fuehrt sowas ... 🙂 Das was du willst wurde wahrscheinlich schon 1000x geloest, nur nicht ganz so, wie du es in deinem Hirn hast. Da du nur dein Bild im Kopf akzeptierst und Alternativen argumentlos abgeschmettert werden, halte ich dich fuer beratungsresistent. Aber vielleicht bin ich ja beratungsresistent, da ich immer noch nicht verstehe, warum der MainLoop blockierend sein soll. Ist es der MainLoop eines Spiels das in "Echtzeit" laeuft, so macht blockierend keinen Sinn.

    PS: Jede Tastatureingabe ist eine IO-Operation. Und wahrscheinlich arbeitet jedes asynchrone Eventsystem irgendwie mit Threads ... ach verdammt, jedes Programm hat ja mindestens einen Thread.Wir haben da z.B. boost::asio, Events -> Qt hat da auch was mit Netzwerkstreams, epoll ... nein, ich kenne mich nur oberflaechlich damit aus. Keine Ahnung, ob diese dein Problem loesen, da ich das immer noch nicht mitbekommen habe ...



  • knivil schrieb:

    Aber vielleicht bin ich ja beratungsresistent, da ich immer noch nicht verstehe, warum der MainLoop blockierend sein soll. Ist es der MainLoop eines Spiels das in "Echtzeit" laeuft, so macht blockierend keinen Sinn.

    Nur, wenn man 100% der CPU-Zyklen verbrauchen will.

    knivil schrieb:

    PS: Jede Tastatureingabe ist eine IO-Operation. Und wahrscheinlich arbeitet jedes asynchrone Eventsystem irgendwie mit Threads ...

    Nein. Warum sollte das so sein?

    knivil schrieb:

    Wir haben da z.B. boost::asio, Events -> Qt hat da auch was mit Netzwerkstreams, epoll ... nein, ich kenne mich nur oberflaechlich damit aus.

    Qt würde das Problem lösen. Hat aber kein Joystick-Eingabe.



  • ProgChild schrieb:

    Wo bietet mir die SFML denn die Möglichkeit, über IO-Events benachrichtigt zu werden?

    Mit sf::Window::GetEvent() . Falls dir das zu prozedural ist, kannst du relativ einfach ein Signal/Slot-System (z.B. mit Boost.Signals) darum herumbauen.



  • Nexus schrieb:

    Mit sf::Window::GetEvent() . Falls dir das zu prozedural ist, kannst du relativ einfach ein Signal/Slot-System (z.B. mit Boost.Signals) darum herumbauen.

    Entschuldigung. Da war ich wohl an der Stelle etwas zu ungenau. Ich meine Benachrichtigungen ob ein Socket bereit zum lesen oder schreiben ist. Die Liste der Events scheint das nicht herzugeben.


Anmelden zum Antworten