SDL_PollEvent: 将队列头中的事件抛出来。 SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。 SDL只提供...
SDL_PollEvent 函数 是 非阻塞函数 SDL_PollEvent 函数原型如下 : int SDL_PollEvent(SDL_Event *event); 1. event 参数 :指向 SDL_Event 对象的指针 , 如果有事件 , 则通过该参数获取事件 ; int 返回值 :如果获取事件成功 , 则返回 1 ; 如果获取事件失败 , 返回 0 ; 代码示例 :使用 SDL_PollEvent 函...
// 声明 SDL_Event 变量 SDL_Event event; // 将 SDL_Event 变量地址传入 SDL_PollEvent 函数 // 如果返回 1 , 则处理事件 // 如果返回 0 , 则不处理事件 if (SDL_PollEvent(&event)) { // 处理事件 } 2、SDL_WaitEvent 函数 SDL_WaitEvent 函数 的作用是 阻塞等待事件发生 , 如果没有事件发生 ...
SDL 有两种方式获取事件队列中的事件: 1.SDL_PollEvent类似 Win32 API 中的 PeekMessage,无论队列中有无事件都会立即返回,区别只是返回值不同 2.SDL_WaitEvent类似 Win32 API 中的 WaitMessage,如果队列中没有事件会阻塞等待,直到收到第一个事件才返回 我们使用第二种方式实现事件循环: SDL_Eventevent{};boolkee...
SDL_PollEvent: 将队列头中的事件抛出来。 SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。
SDL_PollEvent: 将队列头中的事件抛出来。 SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。
SDL_PollEvent: 将队列头中的事件抛出来。 SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout:与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。 SDL只提供了...
SDL_PollEvent: 将队列头中的事件抛出来。 SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。
SDL_Event e; bool quit = false; while (quit == false) { while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) { quit = true; } } } } } SDL_DestroyWindow(window); SDL_Quit(); return 0; } 代码解释 额,我相信有看过我开头提到的那篇教程的一定已经发现我这段代码完全照抄教程的...
当用户点击了窗口左上角 叉 的时候,对应 SDL_Event 的 type 就是 SDL_QUIT ,这个 type 是一定要添加处理的,不然点叉就关闭不了窗口了。 bool bQuit = false; while (!bQuit){ while (SDL_PollEvent(&windowEvent)){ ...