如何在 MacOS 上使用 SDL2 创建 window
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);
}
我也尝试了 this 来自 wiki 的代码示例,同样的问题。
编译
clang -F /Library/Frameworks -framework SDL2 main.c
我正在研究 MacOS 大苏尔。我从 their website 上下载的 .dmg
文件安装了 SDL2(运行时二进制文件 / Mac OS X),并放入 /Library/Frameworks
文件夹
这是兼容性问题吗?我该如何解决?
编辑
我也尝试在 this tutorial 之后安装 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);
}
我正在尝试使用 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);
}
我也尝试了 this 来自 wiki 的代码示例,同样的问题。
编译
clang -F /Library/Frameworks -framework SDL2 main.c
我正在研究 MacOS 大苏尔。我从 their website 上下载的 .dmg
文件安装了 SDL2(运行时二进制文件 / Mac OS X),并放入 /Library/Frameworks
文件夹
这是兼容性问题吗?我该如何解决?
编辑
我也尝试在 this tutorial 之后安装 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);
}