SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp

A "port" of SDL3 in C++.

This basically wrap SDL3 naturally OO looking concepts into proper C++ classes and objects, trying to as straightforward as possible. It was inspired on SDL2pp, with the addition of flexible memory management and wrappers for string and callbacks.

Quick start / TLDR

;

and Examples directory.

Goals

  • Be header only, we are only wrapping SDL here;
  • Mostly wrap the naturally OO-looking API into actual OO C++ constructs;
    • Also add little quick improvements like using vocabulary types to better fit C++ idioms;
    • See transformations for more details;
  • Put everything into a SDL namespace instead of prefixes;
    • For uniformity we also wrap non OO entities at lower priority (like aliases, functions, constants, etc);
  • Interfaces should accept both C structs and the C++ wraps, so you can adapt a codebase gradually or just choose to use only what you deem necessary.
  • Flexible, while we use RAII idiom by default, you have the choice to not use it and, for example, manage memory yourself.

Documentation

Example

#include <iostream>
#include <SDL3pp/SDL3pp.h>
#include <SDL3pp/SDL3pp_main.h>
using namespace std::chrono_literals;
int main(int argc, char** argv)
{
constexpr SDL::Point WINDOW_SZ = {400, 400};
SDL::Window window;
SDL::Renderer renderer;
SDL::CreateWindowAndRenderer("Test", WINDOW_SZ, 0, &window, &renderer);
SDL::Texture characterTexture{
renderer, std::format("{}../assets/smiley.png", SDL::GetBasePath())};
SDL::FRect characterRect(SDL::FPoint(WINDOW_SZ) / 2 - SDL::FPoint{64, 64},
{128, 128});
bool running = true;
while (running) {
while (auto ev = SDL::PollEvent()) {
if (ev->type == SDL::EVENT_QUIT) { running = false; }
}
renderer.SetDrawColorFloat({.5f, .5f, .5f, 1.f});
renderer.RenderClear();
renderer.SetDrawColorFloat({0.f, 0.725f, 0.f, 1.f});
renderer.RenderFillRect(SDL::FRect{10, 10, 380, 380});
renderer.RenderTexture(characterTexture, {}, characterRect);
renderer.Present();
SDL::Delay(1ns);
}
return 0;
}
bool PollEvent(Event *event)
Poll for currently pending events.
Definition SDL3pp_events.h:1091
const char * GetBasePath()
Get the directory where the application was run from.
Definition SDL3pp_filesystem.h:138
void Init(InitFlags flags)
Initialize the SDL library.
Definition SDL3pp_init.h:255
void RenderTexture(TextureRef texture, OptionalRef< const FRectRaw > srcrect, OptionalRef< const FRectRaw > dstrect)
Copy a portion of the texture to the current rendering target at subpixel precision.
Definition SDL3pp_render.h:7101
void RenderFillRect(OptionalRef< const FRectRaw > rect)
Fill a rectangle on the current rendering target with the drawing color at subpixel precision.
Definition SDL3pp_render.h:7044
void CreateWindowAndRenderer(StringParam title, const PointRaw &size, WindowFlags window_flags, Window *window, Renderer *renderer)
Create a window and default renderer.
Definition SDL3pp_render.h:3643
void RenderClear()
Clear the current rendering target with the drawing color.
Definition SDL3pp_render.h:6875
void Present()
Update the screen with any rendering performed since the previous call.
Definition SDL3pp_render.h:7674
void SetDrawColorFloat(const FColorRaw &c)
Set the color used for drawing operations (Rect, Line and Clear).
Definition SDL3pp_render.h:6615
void Delay(Uint32 ms)
Wait a specified number of milliseconds before returning.
Definition SDL3pp_timer.h:292
constexpr EventType EVENT_QUIT
User-requested quit.
Definition SDL3pp_events.h:57
constexpr InitFlags INIT_VIDEO
INIT_VIDEO implies INIT_EVENTS, should be initialized on the main thread
Definition SDL3pp_init.h:71
The structure that defines a point (using floating point values).
Definition SDL3pp_rect.h:422
A rectangle stored using floating point values.
Definition SDL3pp_rect.h:1351
The structure that defines a point (using integers).
Definition SDL3pp_rect.h:97
A structure representing rendering state.
Definition SDL3pp_render.h:2087
An efficient driver-specific representation of pixel data.
Definition SDL3pp_render.h:2993
The struct used as an opaque handle to a window.
Definition SDL3pp_video.h:2724

See more examples at examples directory