gpt4 book ai didi

c - SDL 窗口未正确关闭

转载 作者:行者123 更新时间:2023-11-30 19:40:46 24 4
gpt4 key购买 nike

我有一个 SDL 窗口,按下十字键后需要一段时间才能关闭。我在事件循环中发生了一些事情,所以我认为这可能与此有关。我有一个类似的 SDL 窗口,它会立即关闭,但它在事件循环期间不执行任何操作,仅检查交叉。

我的事件循环代码是这样的:

while(event.type != SDL_QUIT){
while(SDL_PollEvent(&event) != 0){
if (event.type == SDL_QUIT){
SDL_Quit();
exit(1);
}
flashingText(data, fontdata, display, text);
}
SDL_Delay(100);
}

flashingText函数中存在一些SDL延迟和SDL渲染?

最佳答案

发生延迟是因为每个轮询事件都调用了flashingText(),并且鼠标在窗口内移动越多,循环触发和轮询的事件就越多。考虑这段代码(它使用上面的事件轮询);

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

int main()
{
SDL_Window* window;
SDL_Renderer* renderer;

// Initialize SDL.
if (SDL_Init(SDL_INIT_VIDEO) < 0)
return 1;

window = SDL_CreateWindow("SDL_RenderClear",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
512, 512,
0);

renderer = SDL_CreateRenderer(window, -1, 0);
SDL_SetRenderDrawColor(renderer, 255, 128, 128, 255);
SDL_RenderClear(renderer);

// OP's code starts
SDL_Event event;
while(event.type != SDL_QUIT){
while(SDL_PollEvent(&event)){
if (event.type == SDL_QUIT){
SDL_Quit();
exit(1);
}
SDL_RenderPresent(renderer);
// to simulate OP's flashingText()
SDL_Delay(50);
}
SDL_Delay(100);
}
// OP's code ends

return 0;
}

您会发现,鼠标在窗口区域内滚动/移动的次数越多,程序退出的延迟就越长。

希望有帮助。

干杯。

关于c - SDL 窗口未正确关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com