SDL2 无法在屏幕上绘制白色矩形

SDL2 fails to draw a white rectangle on the screen

我正在学习 this 教程,作者说代码应该打开一个 window 并用白色矩形填充 window 的表面。 但是,我看到的只是一片黑色window。我试过更改颜色,但它仍然是黑屏。

这是我正在使用的代码:

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

int main(int argc, char *argv[])
{
    const int width  = 500;
    const int height = 500;

    SDL_Window* window          = NULL;
    SDL_Surface* windowSurface = NULL;

    if(SDL_Init(SDL_INIT_VIDEO) < -1)
    {
        printf("[Error at initialization] %s", SDL_GetError());
    } 
    else 
    {
        window = SDL_CreateWindow("Test window", SDL_WINDOWPOS_UNDEFINED,
                SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_SHOWN);

        if(window == NULL) 
        {
            printf("[Error at creating the window] %s", SDL_GetError());
        }
        else 
        {
            windowSurface = SDL_GetWindowSurface(window);

            SDL_FillRect(windowSurface, NULL, SDL_MapRGB(windowSurface->format,
                      0xFF, 0xFF, 0xFF)); 

            SDL_Delay(5000);
        }

    }

    SDL_DestroyWindow(window);

    SDL_Quit();

    return 0;
}

这是生成文件:

OBJS = try1.cpp

CC = g++

LINKER_FLAGS = -lSDL2

COMPOILER_FLAGS = -W


OBJS_NAMES = 01_hello_SDL

all:
    g++ $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJS_NAMES)

这就是我 运行 程序时出现的内容:

您需要在 SDL 中手动更新 window,可能是这样的:

   SDL_UpdateWindowSurface(window);

个人觉得cocos2d-x比SDL方便