[英]How to create a window with SDL2 on MacOS
我正在尝试使用 SDL2 创建 window。 编译时我没有收到任何错误,但在运行时我也没有收到任何 window 。
这是我的代码(没有错误检查可读性)。
#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);
}
我还尝试了来自 wiki 的这个代码示例,同样的问题。
汇编
clang -F /Library/Frameworks -framework SDL2 main.c
我正在开发 MacOS Big Sur。 我从他们网站上下载的.dmg
文件(运行时二进制文件/Mac OS X)安装了 SDL2,并放入/Library/Frameworks
文件夹
这是兼容性问题吗? 我该如何解决?
编辑
我还尝试按照本教程安装 SDL,仍然是同样的问题。
您需要添加一个事件循环来获取 window -
#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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.