2D-Programmierung - Welcher Weg ist der Beste?



  • hast du auch die libs eingebunden und dies auch in der richtigen Reihenfolge?

    mfg ligginator



  • In den Tutorials auf der SFML-Homepage sollte eigentlich alles erklärt sein. Im Forum findest du auch viele Problemlösungen.



  • Ich hatte ein paar Linker Options vergessen.

    Der Witz ist jetzt:
    Im Tut hier http://www.sfml-dev.org/tutorials/1.3/window-events.php
    wird App.Close aufgerufen.
    Aber anscheinend gibt es die Methode Close gar nicht.
    Window.App gibts,
    Window.Display gibts,
    und ne Menge mehr, aber KEIN Close. Es wird mir nicht mal vorgeschlagen. Da kann doch was nicht stimmen...



  • mad_martin schrieb:

    Nur, um das OpenGL Fenster aufzumachen und die Userinputs zu verarbeiten (AFAIK). Da dort OpenGL benutzt wird, ist es wurscht, ob man SFML oder SDL nimmt.

    Im 3D-Bereich sollten sie sich, s.o., nichts tun, da beide ja OpenGL dafür nutzen. Bei 2D nutzt SFML ebenfalls OpenGL, aber SDL nimmt irgendwas, was da ist (das kann durchaus etwas ohne Hardwarebeschleunigung sein, daher langsamer). Es kommt natürlich auf den Programmierer an, wie er mit den Dingern arbeitet, aber provokativ kann man schon sagen, dass SFML schneller läuft.

    SFML benutzt intern (auch fuer 2D) OpenGL. Und wenn du 'schnelles' SDL haben willst, musst du auch dort OpenGL verwenden. Daher meine Aussage "richtig benutzt ist SDL gleich schnell wie SFML". Und natuerlich weiss ein Anfaenger sowas nicht, daher ists auch gut, einem Anfaenger SFML zu empfehlen - ein fortgeschrittener Benutzer wird selbst abschaetzen koennen, ob er lieber direkt auf OpenGL programmiert oder die Power gar nicht benoetigt und deshalb die komfortablere API benutzt.

    Wie gesagt hatten wir genau diese Diskussion schon mal hier, da ging es um genau den gleichen (schwachfugigen ;p) Thread auf dem SFML-Board. Natuerlich gewinnt Software-SDL nicht gegen Hardware-SFML.

    Uebrigens wird genau das auch am Ende des von euch verlinkten Threads erwaehnt: 🙄

    Your benchmarks are severly flawed. You are comparing the software, 2D library that ships with SDL to OpenGL. Of course you are going to get a huge difference in performance - you don't even need to perform a benchmark to understand that.

    I perfectly know that, this benchmark is basically just for beginners who might not be aware of the technical details, and wonder how SFML compares to a well known multimedia library.



  • Blue-Tiger schrieb:

    mad_martin schrieb:

    Nur, um das OpenGL Fenster aufzumachen und die Userinputs zu verarbeiten (AFAIK). Da dort OpenGL benutzt wird, ist es wurscht, ob man SFML oder SDL nimmt.

    Im 3D-Bereich sollten sie sich, s.o., nichts tun, da beide ja OpenGL dafür nutzen. Bei 2D nutzt SFML ebenfalls OpenGL, aber SDL nimmt irgendwas, was da ist (das kann durchaus etwas ohne Hardwarebeschleunigung sein, daher langsamer). Es kommt natürlich auf den Programmierer an, wie er mit den Dingern arbeitet, aber provokativ kann man schon sagen, dass SFML schneller läuft.

    SFML benutzt intern (auch fuer 2D) OpenGL. Und wenn du 'schnelles' SDL haben willst, musst du auch dort OpenGL verwenden. Daher meine Aussage "richtig benutzt ist SDL gleich schnell wie SFML". Und natuerlich weiss ein Anfaenger sowas nicht, daher ists auch gut, einem Anfaenger SFML zu empfehlen - ein fortgeschrittener Benutzer wird selbst abschaetzen koennen, ob er lieber direkt auf OpenGL programmiert oder die Power gar nicht benoetigt und deshalb die komfortablere API benutzt.

    Wie gesagt hatten wir genau diese Diskussion schon mal hier, da ging es um genau den gleichen (schwachfugigen ;p) Thread auf dem SFML-Board. Natuerlich gewinnt Software-SDL nicht gegen Hardware-SFML.

    Uebrigens wird genau das auch am Ende des von euch verlinkten Threads erwaehnt: 🙄

    Your benchmarks are severly flawed. You are comparing the software, 2D library that ships with SDL to OpenGL. Of course you are going to get a huge difference in performance - you don't even need to perform a benchmark to understand that.

    I perfectly know that, this benchmark is basically just for beginners who might not be aware of the technical details, and wonder how SFML compares to a well known multimedia library.

    Naja, richtig benutzt ist C++ dann auch so schnell wie Assembler!

    SDL hat nicht umsonst einen puren 2D Part. Es arbeitet so einfach mit OpenGL zusammen, damit man 3D Anwendungen möglich macht. Bei Diskussionen um Geschwindigkeit etc, sollte man schon über den "reinen" 2D Part von SDL sprechen, ansonsten unterscheided sich SDL von purem OpenGL nämlich auch durch gar nix, ausser, dass die Initialisierung etwas einfacher gemacht wird (es sei denn man verwendet OpenGL blits mit SDL, was dann jedoch wiederum gääähnend langsam ist)



  • der vorschlag mag etwas unkonventionell sein, aber: wer 2d grafikprogrammierung von der pike auf lernen möchte, sprich double buffering und page flipping und dergleichen... dem würde ich empfehlen, das mit java zu tun (im ernst).
    warum? man erzielt sehr schnell recht vernünftige ergebnisse. die performance ist auf modernen rechnern absolut ausreichend (ich hab selbst eine 2d engine in java geschrieben - wollte mal sehen ob das geht - fps konstant vom v-sync gecapped...).
    der haupt punkt ist, dass man sich nicht mit apis wie directx oder opengl rumschlagen muss; das erledigt die bibliothek... und so kann man sich voll drauf konzentrieren, fullscreen exclusive handlen zu lernen, zu rendern usw...
    beherrscht man dann diese technologie ist der sprung von 2d in java auf 2d in einer xbeliebigen anderen sprache klein, denn wenn man erstmal weis, wie in 2d umgebungen gerendert wird, ist es leicht (finde ich) das auf andere umgebungen zu abstrahieren. ein guter programmierer sollte sich nie auf nur eine sprache beschränken und c/c++ sind ganz gemächlich aussterbende technologien (gut, ob java viel länger leben wird, kann ich auch nicht sagen)
    aber wenn man rendern lernen will und 50% des codes nur zur fehlerbehandlung da sind, dann kommt man nur geringfügig dazu, sich aufs wesentliche zu konzentrieren.
    btw c# soll auch sehr gute grafikbibliotheken haben.
    also wenn jemand nicht gleich ein konkretes spiel bauen will sondern erstmal lernen möchte, wie man 2d animationen darstellt, scrolling und ebenen etc implementiert: in java spart ihr locker 30-50% codezeilen, die ihr schreiben müsst und es geht auch alles damit, was in c++ geht.



  • Öhm... vielleicht können wir uns wieder auf mein Problem konzentrieren. Ich hab bereits was, aber es geht nicht, da die Klasse Windown keine Methoden namens Close() oder IsOpened() hat, obwohl es so im Tutorial steht...



  • Hast du dir Version 1.3 gezogen? Und nimmst das passende Tutorial? Dann muss etwas bei dir schief gelaufen sein. Zeig mal deinen Code her!


  • Mod

    BenNation schrieb:

    Öhm... vielleicht können wir uns wieder auf mein Problem konzentrieren. Ich hab bereits was, aber es geht nicht, da die Klasse Windown keine Methoden namens Close() oder IsOpened() hat, obwohl es so im Tutorial steht...

    👍
    anderes wird ab hier entfernt werden ⚠



  • BenNation, meld dich mal auf www.sfml-dev.org im forum an und frag in einem der passenden bereiche nach. du wirst ne antwort normalerweisse innerhalb von 12 h direkt von laurent (dem entwickler) bekommen.


Anmelden zum Antworten