Я хочу загрузить 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?Производительность не слишком важна, потому что это произойдет только один раз при запуске приложения.