SDL — разница между SDL_GetRenderer и SDL_CreateRenderer

#c #c #graphics #sdl #sdl-2

#c #c #графика #sdl #sdl-2

Вопрос:

Обе функции SDL_GetRenderer(SDL_Window*) и SDL_CreateRenderer(SDL_Window*, int, Uint32) , похоже, делают одно и то же: возвращают указатель на SDL_Renderer из окна. Однако какой метод более подходит для этой задачи? SDL Wiki не предоставляет много информации о том, где какой метод следует использовать, поэтому, пожалуйста, объясните, что делает каждый метод, чем они отличаются и где их следует использовать.

Комментарии:

1. Я предполагаю, что сначала вам нужно создать средство визуализации, прежде чем вы сможете его получить

Ответ №1:

SDL_CreateRenderer позволяет создать средство визуализации для окна, указав некоторые параметры. Он хранится в конкретных данных окна, к которым вы можете запросить SDL_GetRenderer (поэтому последнее эквивалентно (SDL_Renderer *)SDL_GetWindowData(window, SDL_WINDOWRENDERDATA) )

Если вы вызываете SDL_GetRenderer , не создав его заранее, вы получите нулевой указатель.

Если вы дважды вызовете SDL_CreateRenderer окно, второй вызов завершится ошибкой SDL_SetError("Renderer already associated with window"); (см. Строку 805).

Смотрите здесь