gpt4 book ai didi

c - 如何在 MacOS 上使用 SDL2 创建窗口

转载 作者:行者123 更新时间:2023-12-04 08:28:13 25 4
gpt4 key购买 nike

我正在尝试使用 SDL2 创建一个窗口。编译时我没有收到任何错误,但我在运行时也没有收到任何窗口。
这是我的代码(没有检查可读性的错误)。

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

int main(void)
{
SDL_Window *win = NULL;
SDL_Renderer *ren = NULL;

SDL_Init(SDL_INIT_EVERYTHING);
SDL_CreateWindowAndRenderer(320, 640, 0, &win, &ren);

SDL_SetRenderDrawColor(ren, 0, 0, 0, 255);
SDL_RenderClear(ren);
SDL_RenderPresent(ren);

SDL_Delay(3000);

SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();

return (0);
}

我也试过 this来自维基的代码示例,同样的问题。
编译 clang -F /Library/Frameworks -framework SDL2 main.c我正在 MacOS Big Sur 上工作。我从 .dmg 安装了 SDL2文件下载于 their website (运行时二进制文件/Mac OS X),并放入 /Library/Frameworks文件夹
那是兼容性问题吗?我该如何解决?
编辑
我还尝试在 this tutorial 之后安装 SDL ,还是一样的问题。

最佳答案

您需要添加一个事件循环来获取窗口 -

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

int main(void)
{
SDL_Window *win = NULL;
SDL_Renderer *ren = NULL;

SDL_Init(SDL_INIT_EVERYTHING);
SDL_CreateWindowAndRenderer(320, 640, 0, &win, &ren);

SDL_SetRenderDrawColor(ren, 0, 0, 0, 255);
SDL_RenderClear(ren);
SDL_RenderPresent(ren);
bool quit = false;

//Event handler
SDL_Event e;

//While application is running
while( !quit )
{
//Handle events on queue
while( SDL_PollEvent( &e ) != 0 ) // poll for event
{
//User requests quit
if( e.type == SDL_QUIT ) // unless player manually quits
{
quit = true;
}
}
}

SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();

return (0);
}

关于c - 如何在 MacOS 上使用 SDL2 创建窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65159971/

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