sdlRenderDebugText function

bool sdlRenderDebugText(
  1. Pointer<SdlRenderer> renderer,
  2. double x,
  3. double y,
  4. String? str,
)

Draw debug text to an SDL_Renderer.

This function will render a string of text to an SDL_Renderer. Note that this is a convenience function for debugging, with severe limitations, and not intended to be used for production apps and games.

Among these limitations:

  • It accepts UTF-8 strings, but will only renders ASCII characters.
  • It has a single, tiny size (8x8 pixels). One can use logical presentation or scaling to adjust it, but it will be blurry.
  • It uses a simple, hardcoded bitmap font. It does not allow different font selections and it does not support truetype, for proper scaling.
  • It does no word-wrapping and does not treat newline characters as a line break. If the text goes out of the window, it's gone.

For serious text rendering, there are several good options, such as SDL_ttf, stb_truetype, or other external libraries.

On first use, this will create an internal texture for rendering glyphs. This texture will live until the renderer is destroyed.

The text is drawn in the color specified by SDL_SetRenderDrawColor().

\param renderer the renderer which should draw a line of text. \param x the x coordinate where the top-left corner of the text will draw. \param y the y coordinate where the top-left corner of the text will draw. \param str the string to render. \returns true on success or false on failure; call SDL_GetError() for more information.

\threadsafety This function should only be called on the main thread.

\since This function is available since SDL 3.1.6.

\sa SDL_RenderDebugTextFormat \sa SDL_DEBUG_TEXT_FONT_CHARACTER_SIZE

extern SDL_DECLSPEC bool SDLCALL SDL_RenderDebugText(SDL_Renderer *renderer, float x, float y, const char *str)

Implementation

bool sdlRenderDebugText(
    Pointer<SdlRenderer> renderer, double x, double y, String? str) {
  final sdlRenderDebugTextLookupFunction = libSdl3.lookupFunction<
      Uint8 Function(
          Pointer<SdlRenderer> renderer, Float x, Float y, Pointer<Utf8> str),
      int Function(Pointer<SdlRenderer> renderer, double x, double y,
          Pointer<Utf8> str)>('SDL_RenderDebugText');
  final strPointer = str != null ? str.toNativeUtf8() : nullptr;
  final result =
      sdlRenderDebugTextLookupFunction(renderer, x, y, strPointer) == 1;
  calloc.free(strPointer);
  return result;
}