This is a snippet from a game I’m developing:
Code:
void BottomRightView::Render()
{
auto renderer = this->GetRenderer();
SDL_DestroyTexture(this->fontTexture);
SDL_FreeSurface(this->fontSurface);
std::string linesStr;
this->player->GetPlayerStateSummary(linesStr);
// TODO recreating these every time seems very inefficient
this->fontSurface = TTF_RenderText_Blended_Wrapped(font, linesStr.c_str(), this->fontColour, 300);
this->fontTexture = SDL_CreateTextureFromSurface(renderer, fontSurface);
SDL_Rect dstrect = { 504, 336, 0, 0 };
SDL_QueryTexture(fontTexture, NULL, NULL, &dstrect.w, &dstrect.h);
SDL_RenderCopy(renderer, this->fontTexture, NULL, &dstrect);
}
Since the player state that I’m drawing to the screen may change at any time, I’m having to create a new surface and texture every frame.
This seems really wasteful. Is there a more efficient way to do this?------------------------
Daniel D’Agostino
You could keep the old texture until status string actually changes, and then update the texture.
JonnyD
January 5, 2017, 7:19pm
3
Jonny DOn Thu, Jan 5, 2017 at 1:39 PM, capehill <juha.niemimaki at gmail.com > wrote:
You could keep the old texture until status string actually changes, and
then update the texture.
SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
JonnyD
January 6, 2017, 1:46pm
5
Nope! That snippet should eventually be expanded, but my time right now is
very limited. Check the header (SDL_FontCache.h) and the test program for
more details. I’m also around for any questions and if that makes me
produce useful information, I’ll add it to the project page.
Jonny DOn Fri, Jan 6, 2017 at 7:24 AM, dandago wrote:
Jonny D wrote:
http://stackoverflow.com/questions/29064904/rendering-
fonts-and-text-with-sdl2-efficiently/29725751#29725751
Jonny D
Interesting project! Is there any documentation on the library’s
capabilities other than the tiny snippet on the Github project homepage?
Daniel D’Agostino
http://gigi.nullneuron.net/gigilabs/
SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org