Ream is a C++ graphics library for Linux. It provides generic buffer allocation and rendering utilities, abstracting platform and graphics APIs while still allowing direct access to API-specific features when needed.
- RAII-based resource management
- Platform abstraction
- Graphics API abstraction
- Flexible buffer allocation
- Multi-threading with automatic or manual synchronization
- High-performance built-in painter
- Out-of-the-box Skia integration
- Hybrid GPU support
- DRM
- Wayland
- Offscreen
- Raster
- OpenGL ES 2.0
- Vulkan (WIP)
-
CZ_REAM_LOG_LEVEL: Sets the minimum log level for runtime output. Available levels (from least to most verbose): 0: Silent, 1: Fatal, 2: Error, 3: Warning, 4: Info, 5: Debug, 6: Trace
-
CZ_REAM_GAPI: Overrides the graphics API selection when
RCoreis initialized withRGraphicsAPI::Auto. Accepted values are:GL(OpenGL),VK(Vulkan), andRS(Raster).
Ream is designed to abstract away the underlying platform and graphics API (GAPI), allowing your code to remain platform and API-independent by default.
To ensure portability, use the classes provided directly under the /Ream directory. For example, to create an image, use RImage::Make(), which will internally return an appropriate implementation such as RGLImage, RSImage, or RVKImage, depending on the active GAPI.
Platform and API-specific implementations reside in the /Ream/GL, /Ream/RS, /Ream/VK, etc, subdirectories.
In cases where you need access to API-specific functionality, most classes provide safe downcasting methods e.g. image->asGL().
The RCore class exposes information about the current platform and GAPI. It can be accessed globally via RCore::Get().