S
EDIT: Ich hab es nun doch hinbekommen, meine fehler waren, dass ich das Bild nicht richtig initialisiert habe, und dass ich bei BlitSurface die falschen Rects verwendet habe. Danke für die Mühe, die ihr euch deswegen gemacht habt.
header :
#ifndef _GFX_H_
#define _GFX_H_
#include <sdl.h>
bool init_SDL(int height,int width,bool fullscreen);
struct image
{
SDL_Surface *img;
SDL_Rect rct;
};
class animimage
{
private :
image *frame;
public:
void load(const char *path,int width,int height,int number);
void draw(int x,int y,int number);
};
#endif
.cpp
#include "gfx.h"
void animimage::load(const char *path,int width,int height,int number)
{
//Das Bild wird geladen und konvertiert
SDL_Surface *temp = SDL_LoadBMP(path);
SDL_Surface *temp2 = SDL_DisplayFormat(temp);
//Das Array, in dem die einzelnen Bilder gespeichert werden
frame = new image[number];
SDL_Rect rect;
for(int i =0;i<number;i++)
{
frame[i].img = SDL_CreateRGBSurface(SDL_HWSURFACE,width,height,24,0,0,0,0);
rect.x = i*width;
rect.y = 0;
rect.w = width;
rect.h = height;
SDL_BlitSurface(temp2,&rect,frame[i].img,NULL);
}
}
void animimage::draw(int x,int y,int number)
{
frame[number].rct.x = x;
frame[number].rct.y = y;
//Das Bild wird auf den Bildschirm geblittet
SDL_BlitSurface(frame[number].img,NULL,screen,&frame[number].rct);
}
was könnte man an dem Code noch weiter optimieren bzw. beschleunigen ? Ich bin für jede Hilfe dankbar. :xmas1: