J'apprends à programmer avec SDL2. Actuellement, je fais un exercice de base. Mon programme charge une image de fond, et une feuille de sprite complète sur le fond. Mais j'ai des problèmes lors de l'exécution du programme. Quand j'exécute le binaire, la fenêtre du programme se ferme immédiatement d'elle-même; Je ne vois rien. Je pense que c'est un problème avec la boucle principale, mais ça me convient. Ceci est mon codeErreur lors de la compilation du test SDL
#include "SDL.h"
void main() {
int gameover = 0;
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* TheWindow;
SDL_Renderer* RenderEngine;
SDL_Surface* LoadedSurface;
SDL_Surface* LoadedImage;
SDL_Texture* CharacterImg;
SDL_Texture* BackgroundImg;
TheWindow = SDL_CreateWindow("Character Test",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 580, SDL_WINDOW_RESIZABLE);
RenderEngine = SDL_CreateRenderer(TheWindow, -1, SDL_RENDERER_ACCELERATED);
LoadedSurface= SDL_LoadBMP("./maptest.bmp");
BackgroundImg = SDL_CreateTextureFromSurface(RenderEngine, LoadedSurface);
SDL_FreeSurface(LoadedSurface);
LoadedImage = SDL_LoadBMP("./sprite.bmp");
CharacterImg = SDL_CreateTextureFromSurface(RenderEngine, LoadedImage);
SDL_FreeSurface(LoadedImage);
SDL_Event event;
while (!gameover)
{
if (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_QUIT:
gameover = 1;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case SDLK_ESCAPE:
case SDLK_q:
gameover = 1;
break;
}
}
break;
}
SDL_RenderClear(RenderEngine);
SDL_RenderCopy(RenderEngine, BackgroundImg, NULL, NULL);
SDL_RenderCopy(RenderEngine, CharacterImg, 120, 80);
SDL_RenderPresent(RenderEngine);
}
SDL_Quit();
}
Si votre programme fonctionne, il est pas une erreur lors de la compilation. –
Aussi, avez-vous essayé d'ajouter quelques printf pour vous connecter aux points critiques, puis exécutez-le à partir de la ligne de commande? Cela devrait vous donner plus de réponses ... –