SDL - Klasse geht nicht



  • Kann mir jemand sagen warum mein Bild nicht geladen wird und nix passiert.
    Es wird zwar "0" returned, aber es kommt kein Fenster -> somit auch kein Bild.
    Aber warum? Ich weiß es nicht....

    #include "SDL/SDL.h"
    #include "SDL/SDL_image.h"
    #include "SDL/SDL_ttf.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    //Global
    SDL_Surface *screen = NULL;
    
    SDL_Surface * LoadImage(const string &filename)
    {
        SDL_Surface *loadedImage = NULL;
        SDL_Surface *optimizedImage = NULL;
        loadedImage = IMG_Load(filename.c_str());
        if(loadedImage != NULL)
        {
            optimizedImage = SDL_DisplayFormat(loadedImage);
            SDL_FreeSurface(loadedImage);
        }
        else
        {
            cout << "Ladefehler " << filename << endl;
            cout << "richtig geschrieben?" << endl;
        }
        return optimizedImage;
    }
    
    void ApplySurface(short x, short y, SDL_Surface *source, SDL_Surface *destination)
    {
        SDL_Rect rect;
        rect.x = x;
        rect.y = y;
        SDL_BlitSurface(source, NULL, destination, &rect);
    }
    
    class Button
    {
        public:
        Button(short x, short y, short w, short h, const string &filename);
        ~Button();
        void show_Button();
        void handle_Button(); //Stub
    
        private:
        SDL_Rect sizes;
        SDL_Surface *picture;
    };
    
    Button::Button(short x, short y, short w, short h, const string &filename)
    {
        sizes.x = x;
        sizes.y = y;
        sizes.w = w;
        sizes.h = h;
        picture = LoadImage(filename);
    }
    
    Button::~Button()
    {
    
    }
    
    void Button::show_Button()
    {
        ApplySurface(sizes.x, sizes.y, picture, screen);
    }
    
    int main(int argc, char *args[])
    {
        //main Global
        SDL_Event event;
        bool exit;
        Button test(200,200,100,100,"bud.jpeg");
    
        screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    
        if(TTF_Init() == -1)
        {
            return 1;
        }
    
        while(!exit)
        {
            while(SDL_PollEvent(&event))
            {
                if(event.type == SDL_QUIT)
                {
                    exit = true;
                }
            }
    
            test.show_Button();
    
            if(SDL_Flip(screen) == -1)
            {
                return 1;
            }
        }
    
        TTF_Quit();
        SDL_Quit();
    
        return 0;
    }
    

  • Mod

    welchen wert hat exit aus zeile 79?



  • Oh verdammt dass hab ich übersehen! Ich habs dann jetzt durch "bool exit = false" ersetzt.
    Und das Fenster kommt, das Bild wird aber trotzdem nicht angezeigt....

    MfG
    Stromberg


  • Mod

    hast du keinen debugger dass du das nicht findest?



  • Mein Debugger von Codeblocks funktioniert irgendwie nicht.

    MfG
    Stromberg



  • Ja, das musst du afaik selber konfigurieren. Einfach in den Optionen den Pfad zum GDB(Oder einem anderen Debugger, wenn das überhaupt geht) setzen.



  • Dir fehlt ein SDL_Init.



  • Stimmt. Das Bild wird aber trotzdem nicht angezeigt. Es wird einfach n schwarzes Fenster geöffnet, also ich blick grad gar nimma durch, obwohl ich dass jetzt auch alles ma mitm Debugger durchgelaufen bin, ich finde da nix.

    MfG
    Stromberg



  • Hallo

    Versuchs vielleicht mal mit Express-Version vom Visual Studio. Da ist der Debugger sofort einsatzbereit.

    chrische



  • Der Fehler ist(war), dass ich ".jpeg" geschrieben habe, wenn ich bloß ".jpg" schreibe geht es, und das Bild wird angezeigt.

    MfG
    Stromberg



  • Ja, es ist schon sinnvoll, den Dateinamen richtig zu schreiben... 😃


Anmelden zum Antworten