gpt4 book ai didi

c++ - SDL:窗口卡住

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:35 25 4
gpt4 key购买 nike

我想开始使用 SDL。我得到了一个示例代码,看看它是否工作正常。编译时我没有得到任何错误,但是当我运行它时,窗口出现但程序卡住,直到延迟时间结束。我是新手,所以非常感谢您的帮助。

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

SDL_Init(SDL_INIT_EVERYTHING);

SDL_Window *window = 0;

window = SDL_CreateWindow("Hello World!",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);

SDL_Delay(10000);

SDL_DestroyWindow(window);
SDL_Quit();

return 0;

最佳答案

如@HolyBlackCat 所述,您需要一个事件循环: https://wiki.libsdl.org/SDL_PollEvent

它应该看起来像这样:

while (true) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
/* handle your event here */
}
/* do some other stuff here -- draw your app, etc. */
}

编辑
您将需要用事件循环替换延迟。相反,您可以在发生事件时关闭应用程序。您至少可以/应该做的是处理 SDL_QUIT事件,当用户尝试关闭窗口时发送:

while (!quit) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
/* handle your event here */

//User requests quit
if( event.type == SDL_QUIT )
quit = true;
}
/* do some other stuff here -- draw your app, etc. */
}

关于c++ - SDL:窗口卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48226816/

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