2014-01-13 3 views
0

SDL에 문제가 있습니다. 다음 코드를 실행하면 응답하지 않습니다. 나는 실행 파일과 같은 폴더에 .bmp를 가지고있다. 코드에 문제가 있거나 어디에서 .....?내 SDL 응용 프로그램이 응답하지 않습니다.

#include "SDL/SDL.h" 

int main(int argc, char* args[]) 
{ 
    SDL_Surface* robot = NULL; 
    SDL_Surface* screen = NULL; 
    SDL_Init(SDL_INIT_EVERYTHING); 
    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); 
    robot = SDL_LoadBMP("robot.bmp"); 
    SDL_BlitSurface(robot, NULL, screen, NULL); 
    SDL_Flip(screen); 
    SDL_Delay(12*1000); 
    SDL_FreeSurface(robot); 
    SDL_Quit(); 
    return 0; 
} 
+1

응답하지 않을 수 있습니까? "robot.bmp"에 이미지가 표시됩니까? 동일한 디렉토리에있는이 이미지입니까? – UmNyobe

+0

가능한 [C++ 게임 루프 예제] (http://stackoverflow.com/questions/3029545/c-game-loop-example) – UmNyobe

+0

robot.bmp가 프로젝트에있는 동일한 디렉토리에 있습니다 ... 내가 원할 때 그것을 닫으면 프로그램이 응답하지 않습니다. .exe처럼 실행하면 이미지가 표시되지 않습니다. 디버깅하고 코드 블록에서 실행하면 이미지가 표시됩니다. 그러나 두 경우 모두 내가 화면을 클릭하거나 닫으려는 경우 프로그램이 응답하지 않습니다. – user2942681

답변

3

SDL_Delay(12*1000);은 현재 스레드를 12 초 동안 정지시킵니다. 문제는 정지 된 스레드가 이미지를 표시하는 "비디오"스레드라는 것입니다. 12 초 후에 창이 닫히고 프로그램이 종료됩니다.

이미지를보고 마음대로 종료하려면 키보드 이벤트처럼 원하는 특정 이벤트가 발생할 때까지 기다려야합니다. SDL이 포함 된 here how to make basic event loop을 참조하십시오.

관련 문제