我想将我所有的 SDL_Surface 初始化为一个函数,以便获得最清晰的 main 可能,但它似乎不起作用。我正在这样做:
void setImages(SDL_Surface* mur, SDL_Surface* caisse, SDL_Surface* caisseOk, SDL_Surface* menu, SDL_Surface* objectif)
{
mur = IMG_Load("images\\mur.jpg");
caisse = IMG_Load("images\\caisse.jpg");
caisseOk = IMG_Load("images\\caisse_ok.jpg");
menu = IMG_Load("images\\menu.jpg");
objectif = IMG_Load("images\\objectif.png");
}
并像这样主要调用它:
setImages(mur, caisse, caisseOk, menu, objectif);
SDL_BlitSurface(menu, NULL, screen,&posMenu);
SDL_Flip(screen);
我测试过,IMG_Load 工作正常,但它似乎没有在函数之外初始化我的 SDL_Surface。有没有办法做到这一点 ?我想必须有一种方法可以正确初始化我的所有 SDL_Surface 在主...
同样,如果我将 SDL_Init() 和 SDL_SetVideoMode() 放入一个函数中,我猜我的屏幕也不会被初始化?这是我的功能:
void initVideo(SDL_Surface* screen)
{
if(SDL_Init(SDL_INIT_VIDEO) <0)
{
fprintf(stderr,"Erreur lors de l'initialisation video : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
screen = SDL_SetVideoMode(640,420,32,SDL_HWSURFACE | SDL_DOUBLEBUF);
if(screen == NULL)
{
fprintf(stderr,"Erreur lors de la configuration video : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
}
我打电话给主要的:
SDL_Surface *screen = NULL, *menu = NULL, *marioH = NULL, *marioD = NULL, *marioB = NULL, *marioG = NULL,
*caisse = NULL, *caisseOk = NULL, *objectif = NULL, *mur = NULL;
SDL_Rect posMenu, posMario;
initVideo(screen);
没有什么给我发送错误,但似乎没有任何反应。我在网上找到的唯一内容是“你为什么要这样做?没用”。那正确吗 ?