LINUX.ORG.RU

Вопрос по SDL2

 , ,


0

1

Загружаю я изображение функцией IMG_Load, на выходе объект SDL_Texture.
Как средствами самого SDL склейть текстуры в одну, перед отрисовкой?
Прошу сильно не пинать, я в геймдеве нуб.

★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Создаешь основу. В нее пихаешь блоки со своими текстурами

minakov ★★★★★
()

Взгляни на SDL_SetRenderTarget().

E ★★★
()
Ответ на: комментарий от E

Хм, он разве не только у SDL_Surface?

Но вообще ОПу надо всё через SDL_BlitSurface копировать в одну поверхность, а потом её в текстуру.

O02eg ★★★★★
()
Ответ на: комментарий от O02eg

Только через surface, да. Но это официально рекомендованный способ. Даже в вики где-то примеры были.

E ★★★
()
Ответ на: комментарий от x4DA

Слишком большая разница в FPS, когда рендеришь одно_большое_изображение vs куча_мельких.

FIL ★★★★
() автор топика
Ответ на: комментарий от O02eg

Да в том то и проблема, IMG_Load возвращает текстуру, как из нее получить Surface я не понимаю.

FIL ★★★★
() автор топика
Ответ на: комментарий от FIL

Тот ли IMG_Load используется?

extern DECLSPEC SDL_Surface * SDLCALL IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, const char *type);
/* Convenience functions */
extern DECLSPEC SDL_Surface * SDLCALL IMG_Load(const char *file);
extern DECLSPEC SDL_Surface * SDLCALL IMG_Load_RW(SDL_RWops *src, int freesrc);

#if SDL_VERSION_ATLEAST(2,0,0)
/* Load an image directly into a render texture.
 */
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTexture(SDL_Renderer *renderer, const char *file);
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTexture_RW(SDL_Renderer *renderer, SDL_RWops *src, int freesrc);
extern DECLSPEC SDL_Texture * SDLCALL IMG_LoadTextureTyped_RW(SDL_Renderer *renderer, SDL_RWops *src, int freesrc, const char *type);
#endif /* SDL 2.0 */
O02eg ★★★★★
()
Ответ на: комментарий от FIL

ОП написал что перед выводом, логично предоложить что никаких других операций делать он не собрался, в этом случае блит будет автоматическим и возможно даже более эффективным.

x4DA ★★★★★
()
Ответ на: комментарий от FIL

Слишком большая разница в FPS, когда рендеришь одно_большое_изображение vs куча_мельких.

Если «куча_мелких» на одной текстуре, то разницы не будет. А если понадобится переключение текстур, тогда да, привет тормоза.

andreyu ★★★★★
()
Ответ на: комментарий от O02eg

О_о Что-то я не углядел... Спасибо.

FIL ★★★★
() автор топика

склейть

Язабан

на выходе объект SDL_Texture

Написали уже, но там всегда SDL_Surface была

buddhist ★★★★★
()

Текстуры для этого не предназначены, они лежат в видеокарте как ей удобно и их даже прочитать простым способом нельзя.

Грузи в surface и делай blit на общую поверхность. С текстурами, конечно, можно сделать render в одну текстуру и использованием render target, но это извращение.

slovazap ★★★★★
()
Ответ на: комментарий от FIL

Ложь, IMG_Load возвращает Surface. Текстуру возвращает IMG_LoadTexture.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.