我正在调用SDL_PeepEvents( sdlevent, EVENT_BUFFER_SIZE, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_SYSWMEVENT );
但是经过几秒的运行时间并且在窗口周围乱码(调整大小/移动/最小化),当单击x关闭窗口时,它不会拾取事件。
void Window::pollWindowEvents( )
{
const int EVENT_BUFFER_SIZE = 16;
SDL_Event sdlevent[ EVENT_BUFFER_SIZE ]; //The SDL event that we will poll to get events.
SDL_PumpEvents( );
int numEvents = SDL_PeepEvents( sdlevent, EVENT_BUFFER_SIZE, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_SYSWMEVENT );
std::cout << numEvents << std::endl;
for ( int i = 0; i < numEvents; ++i )
{
switch ( sdlevent[ i ].type )
{
case SDL_QUIT:
closed = true;
std::cout << sdlevent[ i ].type << std::endl;
break;
default:
std::cout << sdlevent[ i ].type << std::endl;
break;
};
}
}
有谁知道我做错了什么?
答案 0 :(得分:1)
调用SDL_PeepEvents()
时,我只处理队列中的一系列选定事件,其余事件未经处理。这导致事件队列被这些未处理的事件所饱和,结果停止了我想要处理的事件。通过处理事件队列中的所有事件,可以轻松解决此问题。