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 一个-关闭合成。
基本上,我想要一个包含文本和图像的纹理。
我该怎么做? 我一直在 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 一个-关闭合成。