Ответ 1
SDL_Window
SDL_Window
- это структура, которая содержит всю информацию о самом окне: размер, положение, полный экран, границы и т.д.
SDL_Renderer
SDL_Renderer
- это структура, которая обрабатывает весь рендеринг. Он привязан к SDL_Window
, поэтому он может отображать только внутри SDL_Window
. Он также отслеживает настройки, связанные с рендерингом. Существует несколько важных функций, связанных с SDL_Renderer
-
SDL_SetRenderDrawColor(renderer, r, g, b, a);
Это устанавливает цвет, на который вы очищаете экран (см. Ниже). -
SDL_RenderClear(renderer);
Это очищает цель рендеринга с установленным выше уровнем рисования -
SDL_RenderCopy(
Вероятно, это функция, которую вы будете использовать больше всего, она используется для рендерингаSDL_Texture
и имеет следующие параметры:-
SDL_Renderer* renderer,
Средство рендеринга, которое вы хотите использовать для рендеринга. -
SDL_Texture* texture,
Текстуру, которую вы хотите визуализировать. -
const SDL_Rect* srcrect,
Часть текстуры, которую вы хотите визуализировать, NULL, если вы хотите отобразить всю текстуру -
const SDL_Rect* dstrect)
Где вы хотите визуализировать текстуру в окне. Если ширина и высота этогоSDL_Rect
меньше или больше размеров самой текстуры, текстура будет растянута в соответствии с этимSDL_Rect
-
-
SDL_RenderPresent(renderer);
Другие функции SDL_Render * обращаются к скрытой цели. Эти функции возьмут все это и нарисуют в окне, связанном с рендерером.
SDL_Textures и SDL_Surface
SDL_Renderer
, отображает SDL_Texture
. SDL_Texture
- это информация о пикселях одного элемента. Это новая версия SDL_Surface
, которая почти такая же. Разница в основном состоит в том, что SDL_Surface
представляет собой всего лишь struct
, содержащую информацию о пикселях, тогда как SDL_Texture
является эффективным, специфичным для драйвера представлением данных пикселей.
Вы можете преобразовать SDL_Surface * в SDL_Texture, используя
SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer,
SDL_Surface* surface)
После этого SDL_Surface следует освободить, используя
SDL_FreeSurface( SDL_Surface* surface )
SDL_Rect
Простейшая структура в SDL. Он содержит только четыре шорты. x, y
, который удерживает положение и w, h
, который имеет ширину и высоту.
Важно отметить, что 0, 0
- верхний левый угол в SDL. Таким образом, более высокое значение y
означает меньшее значение, а нижний правый угол будет иметь координату x + w, y + h
Подробнее о SDL2 можно прочитать в блоге .