У меня проблемы с использованием 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 или приведения в стиле функции
2 ответа
В SDL2 вы должны создать SDL_Renderer
и использовать SDL_RenderClear
.
Если вы действительно хотите использовать SDL_FillRect
, вы можете вызвать его на отдельном SDL_Surface
, а затем отрендерить эту поверхность в своем окне за 2 шага. В руководстве по миграции SDL2 говорится об этом: https://wiki.libsdl.org/MigrationGuide
SDL_RenderPresent
необходим для того, чтобы ваши текстуры присутствовали в вашем рендере.
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.