为什么SDL窗口立即关闭?

时间:2018-09-07 01:46:10

标签: c++ sdl

这是我的C ++文件:

#include <iostream>
#include "window.h"
#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {

   if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
     std::cout << "Something went wrong" << std::endl;
}
  else { 
   SDL_CreateWindow("Neptune's Limit", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1024, 768, SDL_WINDOW_OPENGL);
   }

   return 0;
}

当我运行它时,它会闪烁半秒钟,然后立即关闭。我看过其他有关此问题的文章,但对它们的答案是关于SDL_EVENT。我的程序中没有任何地方。

怎么了?

1 个答案:

答案 0 :(得分:3)

创建SDL窗口后,请使用while循环来维护SDL窗口。 我通过此tutorial

学习了基本的SDL功能

简单示例

#include <iostream>
#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {

   if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
     std::cout << "Something went wrong" << std::endl;
   } else { 
     SDL_CreateWindow("Neptune's Limit", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1024, 768, SDL_WINDOW_OPENGL);
     while( true ) {
       // SDL RUNNING
       // Poll Event Code Maybe here!
     }
   }

   return 0;
}

也许此代码不会退出,因为没有exit-SDL代码。

对于退出程序,添加SDL _ Event:

  

SDL POLL EVENT EX)

SDL_Event e;
while(true) { // SDL loop
  while( SDL_PollEvent( &event ) != 0 ) {
    if( event.type == SDL_QUIT ) {
      // Ctrl + C in console !
    }
  } // end of handling event.
}

希望这对您有所帮助。