【问题标题】:My SDL application not responding我的 SDL 应用程序没有响应
【发布时间】:2014-01-13 23:52:13
【问题描述】:

我对 SDL 有疑问。当我运行以下代码时,它没有响应。我在与可执行文件相同的文件夹中有.bmp。代码有问题还是在哪里.....?

  #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;
 }

【问题讨论】:

  • 你能澄清一下没有回应吗?它是否在“robot.bmp”中显示图像?这个图片在同一个目录吗?
  • C++ game loop example的可能重复
  • robot.bmp 位于与项目相同的目录中...当我想关闭它时,它显示程序没有响应。如果我像 .exe 一样运行它,它不会显示图像,如果我在代码块中调试并运行它,它会显示它。但在这两种情况下,如果我点击屏幕或想要关闭它,它显示程序没有响应。
  • 查看我在上面评论中发布的链接上的回复
  • 还是没有反应?!

标签: sdl


【解决方案1】:

SDL_Delay( 12*1000 ); 将暂停当前线程 12 秒。问题是暂停的线程是“视频”线程,即负责显示图像的线程。 12 秒后,窗口将关闭,程序将退出。

为了查看图像并随意退出,您需要等待您选择的特定事件,例如键盘事件。请参阅 here how to make basic event loop 与 SDL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多