【问题标题】:SDL2 - Adding a surface to a surface, texture to texture or something in betweenSDL2 - 将表面添加到表面、纹理到纹理或介于两者之间
【发布时间】:2015-08-21 15:00:15
【问题描述】:

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

我该怎么做呢? 我一直在用 Google 搜索,但似乎找不到将表面与其他表面、纹理与其他纹理或表面与纹理相结合的方法。

编辑: 所以,我正在制作一个简单的 RPG,我想要它,以便当你与 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);
   }
}

【问题讨论】:

标签: c++ sdl sdl-2


【解决方案1】:

将文本和图像作为表面然后调用https://wiki.libsdl.org/SDL_BlitSurface 将一个表面复制到另一个表面应该很简单。之后,您可能希望将组合图像加载到纹理中以与渲染 API 一起使用。

也可以使用 Render API 通过 https://wiki.libsdl.org/SDL_SetRenderTarget 渲染到纹理,但如果我是你,我会坚持使用更简单的 Surface API 进行一次性合成。

【讨论】:

  • 谢谢伙计,真不敢相信我错过了。我只想用 SDL_BlitSurface 澄清一件事:参数“dstrect”是“较大”表面上将粘贴“较小”表面的区域?或者它只是一个显示“更大”表面的大小等的矩形?
  • 是的,它会将srcrect从源表面复制到目标表面的dstrect。如果它们的大小不同,则将进行缩放。
猜你喜欢
  • 2014-01-14
  • 2015-03-17
  • 2020-03-11
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多