Визуализация текстуры поверх текстуры, созданной на поверхности с помощью SDL2 - PullRequest
0 голосов
/ 24 мая 2018

Я хочу загрузить png в текстуру, а затем нарисовать текстовую текстуру поверх нее.Я делаю что-то вроде этого:

SDL_Surface *bgImg = IMG_Load(PNG_PATH);
SDL_Texture *bg = SDL_CreateTextureFromSurface(renderer, bgImg);
SDL_Surface *textSurface = TTF_RenderText_Blended(font, text, red);
SDL_Texture *txt = SDL_CreateTextureFromSurface(renderer, textSurface);

SDL_SetTextureBlendMode(bg, SDL_BLENDMODE_NONE);
SDL_SetRenderTarget(renderer, bg);
SDL_RenderCopy(renderer, txt, NULL, &textDstRect);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderPresent(renderer);

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

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

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

1 Ответ

0 голосов
/ 26 мая 2018

Я создал новую текстуру с SDL_TEXTUREACCESS_TARGET и скопировал в нее текстуру с загруженной поверхностью.

...