(Anfänger) Fragen zu einer BMP Ausgabe mit SDL



  • Hallo,
    erstmal habe ich ein Problem mit dem unten stehenden Code. Er wird ausgeführt, aber die BMP-Datei wird nicht geladen (zuerst habe ich es ohne eine extra Funktion geschrieben, da funktionierte es noch). Das erstellte Fenster öffnet sich kurz (zeigt aber nichts an) und schließt sich sofort wieder, die Konsole bleibt offen. Wo liegt das Problem?

    #include "iostream"
    #include "SDL.h"
    #include "string"
    
    using namespace std;
    
    SDL_Texture* loadTexture(const string &file, SDL_Renderer *ren){
    	SDL_Texture *texture = NULL;
    	SDL_Surface *loadedImage = SDL_LoadBMP(file.c_str());
    	texture = SDL_CreateTextureFromSurface(ren, loadedImage);
    	SDL_FreeSurface(loadedImage);
    
    	return texture;
    }
    
    int main(int argc, char *argv[])
    {
    	SDL_Window *window1 = NULL;
    	SDL_Renderer *ren1 = NULL;
    	SDL_Texture *img1 = NULL;
    
    	window1 = SDL_CreateWindow("BMP", 100, 100, 500, 500, SDL_WINDOW_SHOWN);
    	ren1 = SDL_CreateRenderer(window1, -1, SDL_RENDERER_ACCELERATED);
    
    	if (SDL_Init(SDL_INIT_EVERYTHING) < 0){
    		cout << "Failed Initíalization: " << SDL_GetError() << endl;
    		return 1;
    	}
    
    	img1 = loadTexture("hello.bmp", ren1);
    
    	SDL_RenderClear(ren1);
    	SDL_RenderCopy(ren1, img1, NULL, NULL);		
    	SDL_RenderPresent(ren1); 
    
    	SDL_Quit();
    	return 0;
    }
    

    Und noch eine kurze Verständnis Frage, was genau bezweckt der * beim deklarieren einer Variable mit einem SDL Datentyp?

    Vielen Dank 🙂



  • Musst Du SDL_Init() nicht vor allem anderen SDL-Gedöns aufrufen?

    SDL_Texture* texture; -> texture ist ein Zeiger auf ein Objekt vom Typ SDL_Texture .
    Sollte aber in jedem Buch zu C++ erklärt werden.



  • Du hast Recht! Danke, hat mir sehr weitergeholfen.
    Auch zur 2ten Frage kann ich mich gerade wieder erinnern, es ist zulange her. Ich sollte einige Grundkenntnisse nochmals wiederholen :p


Log in to reply