为什么SDL窗口立即关闭?

Jif*_*s28 4 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;
}
Run Code Online (Sandbox Code Playgroud)

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

可能出什么问题了?

Jai*_*ain 5

创建SDL窗口后,使用while循环来维护SDL窗口。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;
}
Run Code Online (Sandbox Code Playgroud)

也许这段代码不会退出,因为没有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.
}
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助。