SFML + OPENGL verwenden mıt c++.



  • Wenn du nur einfache 2D Grafik willst, dann verwend doch einfach die SFML anstatt direkt mit OpenGL zu hantieren. SFML stellt dir das alles bereits zur Verfügung...



  • @Cho++
    Also ein Beispielprogramm wo du grundsätzlich siehst wie man mit SFML ein Fenster machen tut, und wie man dann mit OpenGL draufmalen kann, wirst du ja vermutlich schon gefunden haben.

    Soweit so gut.

    Jetzt musst du noch OpenGL lernen. Das ist mit SFML nicht anders als ohne SFML, OpenGL halt. Und Programmieren lernen, falls es der Punkt sein sollte an dem dein Vorhaben scheitert.

    Das musst du grundsätzlich beides selbst machen, und in beiden Fällen können Tutorials eine gute Hilfe sein, sind aber bei weitem nicht ausreichend um wirklich was zu lernen. (Wenn man viel Programmier-Tutorials in einen Menschen reintut kommt halt kein Programmierer dabei raus, sondern ein Copy-Paste-Programmierer. ;))

    Sonst... schreib bitte einfach woran konkret du scheiterst. Und schliesse Fragen mit einem Fragezeichen ab.

    Und...

    Cho++ schrieb:

    Kennt ihr andere TUTs.

    Auto, tut-tut! 🤡



  • hustbaer schrieb:

    @Cho++
    Also ein Beispielprogramm wo du grundsätzlich siehst wie man mit SFML ein Fenster machen tut, und wie man dann mit OpenGL draufmalen kann, wirst du ja vermutlich schon gefunden haben.

    Genau das hab ich nicht gefunden und da liegt auch das Problem. Und auf der Seite wird das leider nicht gezeigt..





  • Cho++ schrieb:

    hustbaer schrieb:

    @Cho++
    Also ein Beispielprogramm wo du grundsätzlich siehst wie man mit SFML ein Fenster machen tut, und wie man dann mit OpenGL draufmalen kann, wirst du ja vermutlich schon gefunden haben.

    Genau das hab ich nicht gefunden und da liegt auch das Problem. Und auf der Seite wird das leider nicht gezeigt..

    Das hat doch cooky451 schon in der ersten Antwort hier verlinkt.
    Kannst du schwer übersehen haben.

    Ist sogar das fertige Beispiel als .cpp File dabei, d.h. du musst es dir nichtmal aus den Fragmenten im Tutorial zusammenstückeln.

    while (App.IsOpened()) in dem Beispiel ist die Zeichenschleife, und ab dem Kommentar // Clear color and depth buffer geht der OpenGL Spass los. Dort schreibst du deinen OpenGL Code rein, wie auch immer du zu dem kommst. Für den Anfang Copy/Paste aus diversen (nicht-SFML-spezifischen) OpenGL Tutorials, bisschen selber rumprobieren - das wird schon.

    Und wenn nicht einfach nochmal fragen, aber wie gesagt konkrete(re) Fragen.



  • Hallo,
    Den Code hab ich von SFML Website

    #include <SFML/Graphics.hpp>
    
    int main()
    {
        // Create the main window
        sf::RenderWindow App(sf::VideoMode(800, 600), "SFML window");
    
        // Load a sprite to display
        sf::Image Image;
        if (!Image.LoadFromFile("cb.bmp"))
            return EXIT_FAILURE;
        sf::Sprite Sprite(Image);
    
    	// Start the game loop
        while (App.IsOpened())
        {
            // Process events
            sf::Event Event;
            while (App.GetEvent(Event))
            {
                // Close window : exit
                if (Event.Type == sf::Event::Closed)
                    App.Close();
            }
    
            // Clear screen
            App.Clear();
    
            // Draw the sprite
            App.Draw(Sprite);
    
            // Update the window
            App.Display();
        }
    
        return EXIT_SUCCESS;
    }
    

    Bei diesem Code bekomm ich diesen Fehler

    /home/huseyin/Game 0.0.1/main.cpp|10|Fehler: »class sf::Image« hat kein Element namens »LoadFromFile«|
    /home/huseyin/Game 0.0.1/main.cpp|12|Fehler: keine passende Funktion für Aufruf von »sf::Sprite::Sprite(sf::Image&)«|
    /home/huseyin/Game 0.0.1/main.cpp|12|Anmerkung: Kandidaten sind:|
    /usr/local/include/SFML/Graphics/Sprite.hpp|78|Anmerkung: sf::Sprite::Sprite(const sf::Texture&, const IntRect&)|
    /usr/local/include/SFML/Graphics/Sprite.hpp|78|Anmerkung:   Kandidat erwartet 2 Argumente, 1 angegeben|
    /usr/local/include/SFML/Graphics/Sprite.hpp|67|Anmerkung: sf::Sprite::Sprite(const sf::Texture&)|
    /usr/local/include/SFML/Graphics/Sprite.hpp|67|Anmerkung:   keine bekannte Umwandlung für Argument 1 von »sf::Image« nach »const sf::Texture&«|
    /usr/local/include/SFML/Graphics/Sprite.hpp|57|Anmerkung: sf::Sprite::Sprite()|
    /usr/local/include/SFML/Graphics/Sprite.hpp|57|Anmerkung:   Kandidat erwartet 0 Argumente, 1 angegeben|
    /usr/local/include/SFML/Graphics/Sprite.hpp|47|Anmerkung: constexpr sf::Sprite::Sprite(const sf::Sprite&)|
    /usr/local/include/SFML/Graphics/Sprite.hpp|47|Anmerkung:   keine bekannte Umwandlung für Argument 1 von »sf::Image« nach »const sf::Sprite&«|
    /usr/local/include/SFML/Graphics/Sprite.hpp|47|Anmerkung: constexpr sf::Sprite::Sprite(sf::Sprite&&)|
    /usr/local/include/SFML/Graphics/Sprite.hpp|47|Anmerkung:   keine bekannte Umwandlung für Argument 1 von »sf::Image« nach »sf::Sprite&&«|
    /home/huseyin/Game 0.0.1/main.cpp|15|Fehler: »class sf::RenderWindow« hat kein Element namens »IsOpened«|
    /home/huseyin/Game 0.0.1/main.cpp|19|Fehler: »class sf::RenderWindow« hat kein Element namens »GetEvent«|
    /home/huseyin/Game 0.0.1/main.cpp|22|Fehler: »class sf::Event« hat kein Element namens »Type«|
    /home/huseyin/Game 0.0.1/main.cpp|23|Fehler: »class sf::RenderWindow« hat kein Element namens »Close«|
    /home/huseyin/Game 0.0.1/main.cpp|27|Fehler: »class sf::RenderWindow« hat kein Element namens »Clear«|
    /home/huseyin/Game 0.0.1/main.cpp|30|Fehler: »class sf::RenderWindow« hat kein Element namens »Draw«|
    /home/huseyin/Game 0.0.1/main.cpp|33|Fehler: »class sf::RenderWindow« hat kein Element namens »Display«|
    ||=== Build finished: 20 errors, 0 warnings ===|
    

    why?



  • Why not?

    SFML Version 2.0 <-> Version 1.6 vielleicht?
    Who known.
    Probier halt.
    Vergleich die Doku zur 2.0 mit der Doku zur 1.6, dann siehst du eh was sich geändert hat, und kannst es anpassen.

    Sollte auch als Anfänger hinzubekommen sein.



  • Aso liegt das daran ich dachte er findet die Header datei nicht ^^



  • Wenn er die Header-Datei nicht finden würde, dann würde er irgendwas hinschreiben vonwegen dass er eine Datei nicht findet.
    Die Liste der Kandidaten aus ("Kandidaten sind:") aus "SFML/Graphics/Sprite.hpp" bedeutet schonmal: er hat zumindest "SFML/Graphics/Sprite.hpp" laden können. Sonst könnte er nicht auf die darin enthaltenen Funktionen verweisen.



  • Wenn du dich zwischen SFML 1.6 und SFML 2.0 RC entscheiden musst, nimm letzteres. Die neuere Version enthält viele Bugfixes und neue Features, unter anderem kannst du nun auch gewisse Low-Level-Dinge mit SFML lösen, sodass du noch seltener zu OpenGL greifen musst.


Anmelden zum Antworten