Rendering text every frame versus caching text surfaces can have a significant impact on performance, especially in applications with lots of text or limited processing power. Let's break down the two approaches:
Rendering text every frame:
Caching text surfaces:
In general, caching text surfaces is more performant. Here's a simple example to illustrate the difference:
#include <SDL.h>
#include <SDL_ttf.h>
class Text {
public:
Text(TTF_Font* font, const char* text,
SDL_Color color) {
surface = TTF_RenderText_Blended(
font, text, color);
}
void render(SDL_Surface* dest, int x, int y) {
SDL_Rect dstRect = {x, y, 0, 0};
SDL_BlitSurface(surface, nullptr, dest,
&dstRect);
}
~Text() { SDL_FreeSurface(surface); }
private:
SDL_Surface* surface;
};
// Usage
Text cachedText(font, "Hello, World!",
{255, 255, 255, 255});
// In render loop
cachedText.render(
screenSurface, 100, 100);
This cached approach is much faster than rendering the text every frame:
// In render loop (slower)
SDL_Surface* textSurface =
TTF_RenderText_Blended(font, "Hello, World!",
{255, 255, 255, 255});
SDL_BlitSurface(textSurface, nullptr,
screenSurface, &dstRect);
SDL_FreeSurface (textSurface);
For optimal performance, cache static text and only re-render when the text content changes.
Answers to questions are automatically generated and may not have been reviewed.
SDL_ttf
Learn to render and manipulate text in SDL2 applications using the official SDL_ttf
extension