SDL2 - 添加表面到表面,纹理到纹理或介于两者之间的东西

SDL2 - Adding a surface to a surface, texture to texture or something in between

基本上,我想要一个包含文本和图像的纹理。

我该怎么做? 我一直在 Google-ing 周围,但我似乎找不到将表面与其他表面、纹理与其他纹理或表面与纹理结合的方法。

编辑: 所以,我正在制作一个简单的角色扮演游戏,我想要它,以便当你与 NPC 交谈时,NPC 可以或不可以在文本上附加图像。

理想情况下,我会通过将文本和图像发送到一个函数来完成此操作,该函数将生成我可以渲染的纹理,而不必担心渲染两个不同的纹理以及它们应该放置的位置。

像这样:

void setSayingText(std::string const& text, std::string const& imageLoc = "") {
   SDL_Surface* text = TTF_RenderText_Blended(font, text.c_str(), whiteColor);
   if (imageLoc != "") {
      SDL_Surface* image = IMG_Load(imageLoc);
      texture = SDL_CreateTextureFromSurface(renderer, text + image);
   } else {
      texture = SDL_CreateTextureFromSurface(renderer, text);
   }
}

将文本和图像作为表面然后调用 https://wiki.libsdl.org/SDL_BlitSurface 将一个表面复制到另一个表面应该是微不足道的。之后您可能希望将组合图像加载到纹理中以用于渲染 API.

也可以使用 Render API 渲染到使用 https://wiki.libsdl.org/SDL_SetRenderTarget 的纹理,但如果我是你,我会坚持使用更简单的 Surface API 一个-关闭合成。