Bild anzeigen mit SDL in DevC++



  • Hi,

    Ich versuche mich gerade an einem Tutorial zum Thema SDL. D.h. Ich kenn mich mit SDL kaum aus.

    Jetzt versuche ich gerade ein Bild anzeigen zu lassen. Allerdings geht das Programm immer in die Abbruchbedingung, dass es das Bild nicht laden kann. Ich hab das Bild eigentlich mit richtigem Namen im richtigen Ordner gespeichert... Was ist da falsch?

    #include <stdlib.h>
    #include "SDL/SDL.h"
    int main(int argc, char *argv[])
    {
       SDL_Surface *screen, *image;
       SDL_Event event;
       int done = 0;
       if (SDL_Init(SDL_INIT_VIDEO) == -1) {
           printf("Can't init SDL:  %s\n", SDL_GetError());
           exit(1);
       }
       atexit(SDL_Quit); 
       screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE);
       if (screen == NULL) {
           printf("Can't set video mode: %s\n", SDL_GetError());
           exit(1);
       }
       image = SDL_LoadBMP("tux.bmp");
       if (image == NULL) {
           printf("Can't load image of tux: %s\n", SDL_GetError());
           exit(1);
       }
       SDL_BlitSurface(image, NULL, screen, NULL);
       SDL_FreeSurface(image);
       SDL_UpdateRect(screen, 0, 0, 0, 0);
       SDL_Delay(20000);  
    
       return 0;
    }
    


  • printf("Can't load image of tux: %s\n", SDL_GetError());
    

    Wozu hast du eine Fehlerausgabe, wenn du sie nicht liest? Meiner Erfahrung nach sind die Fehlermeldungen von SDL recht aussagekraeftig.
    Abgesehen davon...das Bild sollte sich im gleichen Ordner befinden wie die Anwendung, was du unter "richtig" verstehst laesst sich leider nur schwer erahnen.

    Der Quellcode sieht aus wie aus dem Pro-Linux Tutorial. Achte darauf, dass es sich wirklich um eine Bitmap-Datei handelt, ggf. mit Paint oeffnen und als Bitmap abspeichern.

    PS: naechstes mal Codetags nutzen



  • Ja, ist so ein Tutorial.

    was ist codetags?
    wo kann ich die fehlerausgabe lesen? Die wird nicht angezeigt.

    Hab das Problem mittlerweile gelöst.

    Gibt es irgendwo eine Liste von Befehlen für SDL? Zum Beispiel würde ich gern eine Zeitanzeige in meinem Fenster haben, mit std.min.sek oder so. Wie geht so was?
    Also in C wüsste ich, wie ich ne Uhr bastel, wie kann man die SDLmäßig ausgeben?



  • Klicke auf Zitieren und schau rein (rechts von hier) -->

    mein Code zwischen Codetags
    


  • wo kann ich die fehlerausgabe lesen?

    Sie wird in dem Konsolenfenster ausgegeben, welches sich im Hintergrund oeffnet. Sollte sich dieses schliessen, schau in die FAQs, wie man das loest.

    Gibt es irgendwo eine Liste von Befehlen für SDL?

    Schau in die Dokumentation, da sind alle Funktionen erklaert.

    Zum Beispiel würde ich gern eine Zeitanzeige in meinem Fenster haben, mit std.min.sek oder so. Wie geht so was?

    Ermittle die Zeit und speichere sie in einem String. Das (vermutlich) einfachste waere dann SDL_ttf (SDL True Type Font; im Prinzip eine Erweiterungsbibliothek zu SDL) zu nehmen, damit eine Schrift (z.B. freie TTF-Schrift Vera.ttf) zu laden und über die den String auf eine Surface zu rendern.

    Ich denke da lassen sich einige Beispiele finden, vermutlich sogar in der Doku zu SDL_ttf.



  • Ich hab immer Probleme solche Libaries zu installieren. Wenn ich jetzt beispielsweise SDL.tff haben will, geh ich auf:
    http://www.libsdl.org/projects/SDL_ttf/

    Welche Datei muss ich jetzt genau runterladen und und in welchen Ordner soll ich die Dateien entpacken?

    Ich benutze WindowsXP mit DevC++. Hab bis jetzt nur SDL zusätzlich installiert. Hat aber auch nur nach langem rumprobieren geklappt.

    Danke.



  • Dev c++ hat webUpdate damit kannst du fehlende Libraris herunterladen.

    Werkzeuge --> Auf Updates/Packete prüfen



  • Das hab ich beim SDL auch probiert, aber dann hat der Compiler die Libarie nicht gefunden.
    Daraufhin hab ichs mir direkt runtergeladen und in die entsprechenden Ordner entpackt.
    Und jetzt kann ich die Erweiterungbibliothek nicht runterladen, weil das Update Programm SDL nicht findet und sagt, dass ich erst SDL runterladen muss.



  • Lade das SDL mit dem WebUpdate herunter und danach SDL ttf,
    auch mit dem WebUpdate. Dann sollte es gehn.

    Die dierect heruntergeladene SDL Libraris haben mit dem WebUpdate nichts zu tun.


Anmelden zum Antworten