繁体   English   中英

如何在 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);
}

我还尝试了来自 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM