Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Ehm ok und wie teste ich das am besten? nach dem Aufruf des Colorkeys fragen, ob zB. Supertoll == NULL ist?
C-/C++-Quelltext |
|
1 |
if (TestPicture == NULL || TestPicture < 0) { |
Ok, ich hab das mal gemacht und jetzt ist meine Frage: Wo sehe ich denn, ob das Laden Null oder kleiner geworden ist? ich frage mich das schon etwas länger.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jawaiica« (29.01.2011, 20:55)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include #include #include #include #include void MyColorKey(int R, int G, int B, int A, SDL_Surface* sName){ SDL_SetColorKey(sName, SDL_SRCCOLORKEY, SDL_MapRGBA(sName->format, R, G, B, A));} int main(int argc, char* argv[]){ //***************************VARIABLEN*********************************** SDL_Surface* buffer = NULL; //dient als Hintergrund SDL_Surface* TestPicture = NULL; //Wird als Test Bild verwendet SDL_Surface* SuperToll = NULL; //Test SDL_Event Event; //Erstellt ein Event SDL_Rect Rect; bool GameIsRunning = true; //wird als Spielschleifenbedingung benutzt //***************************VARIABLEN*********************************** SDL_Init(SDL_INIT_VIDEO); //SDL_INIT_VIDEO initialisiert den "Video" modus. buffer = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); //800 = Breite, 600 = Höhe, 32 = Bits pro Pixel, SDL_HWSURFACE = Sagt, dass das Surface in der Hardware verarbeitet wird. //SDL_SWSURFACE geht auch, dabei wird aber das Surface in der Software verarbeitet. Lieber mit der Hardware verarbeiten lassen, //Da es bei der Software zu einem "Flickern" kommen kann ( bei Bewegungen ). Diese werden hier mit SDL_DOUBLEBUF verhindert. SDL_WM_SetCaption("haha", NULL); //Gibt den Namen des Fensters an while(GameIsRunning) //Führt den Inhalt der Schleife solange aus, bis GameIsRunning auf false gestellt wurde. { if(SDL_PollEvent ( &Event )) { if(Event.type == SDL_KEYDOWN) { switch(Event.key.keysym.sym) { case SDLK_ESCAPE: { GameIsRunning = false; }break; case SDLK_UP: { //MyColorKey(255,0,255,0,SuperToll); SuperToll = IMG_Load("test.bmp"); if(SuperToll < 0) { std::cout << "Bild konnte nicht geladen werden!" << SDL_GetError() << std::endl; } }break; case SDLK_DOWN: { SDL_FreeSurface(SuperToll); }break; } } else if(Event.type == SDL_QUIT) { GameIsRunning = false; } } TestPicture = IMG_Load("3-big.jpg"); //Hier wird dem Surface ein "Ziel" zugeordnet. In diesem Fall das Bild "yey.bmp". SDL_LoadBMP wird zum laden eines //BMP Bildes verwendet. Mit IMG_Load werden andere Bildformate geladen. //MyColorKey(255,0,255,0,TestPicture); if(TestPicture < 0 || TestPicture == NULL) { std::cout << "Konnte Bild nicht laden: " << SDL_GetError() << std::endl; } SDL_BlitSurface(TestPicture, NULL, buffer, NULL); SDL_BlitSurface(SuperToll, NULL, buffer, NULL); //Lässt das Bild abzeigen ÜBER dem Bildschirm(buffer). SDL_Flip(buffer); //Updated den Bildschirm } SDL_FreeSurface(TestPicture); //Hiermit löschen wir das Bild und geben den Speicher wieder frei. SDL_Quit(); //Hiermit beendet man die SDL return 0;} |
C-/C++-Quelltext |
|
1 2 |
//MyColorKey(255,0,255,0,SuperToll); SuperToll = IMG_Load("test.bmp") |
Werbeanzeige