У меня проблемы с использованием SDL_FillRect с SDL 2.0

Вот мой код:

bool running = true;

//Initialise SDL
SDL_Init(SDL_INIT_EVERYTHING);

SDL_Window *screen = SDL_CreateWindow("Test Game",
    SDL_WINDOWPOS_UNDEFINED,
    SDL_WINDOWPOS_UNDEFINED,
    640, 480,
    SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_OPENGL);

while (running){
    SDL_FillRect(screen, NULL, 0);
}

//Quit SDL
SDL_Quit();

return 0;

Я получаю следующее сообщение об ошибке:

1> c: \ users \ ethan \ desktop \ c ++ projects \ другой тест с sdl \ другой тест с sdl \ main.cpp (16): ошибка C2664: 'int SDL_FillRect (SDL_Surface *, const SDL_Rect *, Uint32)': невозможно преобразовать аргумент 1 из 'SDL_Window *' в 'SDL_Surface *'

1> Указанные типы не связаны; преобразование требует reinterpret_cast, приведения в стиле C или приведения в стиле функции

1
Ethan Webster 26 Мар 2014 в 23:20

2 ответа

Лучший ответ

В SDL2 вы должны создать SDL_Renderer и использовать SDL_RenderClear.

Если вы действительно хотите использовать SDL_FillRect, вы можете вызвать его на отдельном SDL_Surface, а затем отрендерить эту поверхность в своем окне за 2 шага. В руководстве по миграции SDL2 говорится об этом: https://wiki.libsdl.org/MigrationGuide

2
Nicolas Louis Guillemot 27 Мар 2014 в 00:21

SDL_RenderPresent необходим для того, чтобы ваши текстуры присутствовали в вашем рендере.

0
user3809627 6 Июл 2014 в 17:52
Этот пост автоматически помечен как низкокачественный, потому что он очень короткий. Не могли бы вы немного расширить его, чтобы объяснить, как он решает проблему?
 – 
gung - Reinstate Monica
6 Июл 2014 в 18:12