| TGX 1.0.5 A tiny 2D/3D graphics library optimized for 32 bits microcontrollers.

Loading...
Searching...
No Matches
TGX

# About the library

TGX is a tiny but full featured C++ library for drawing 2D and 3D graphics onto a memory framebuffer. The library runs on both microprocessors and microcontollers but specifically targets 'powerful' 32 bits MCUs such as ESP32, RP2040/RP2350, Teensy 3/4...

Features

- Hardware agnostic: the library simply draws on a memory framebuffer.
- Optimized RAM usage and no dynamic allocation.
- No external dependency (and no C++ STL dependency): just include the `.h` and `.cpp` files into your project and your are set!
- Library in Arduino friendly format.
- Mutiple color formats supported: RGB565, RGB24, RGB32, RGB64, RGBf, HSV
- Image class that encapsulates a memory buffer and allows the creation of sub-images for clipping any drawing operations.
- Extensive 2D API:
  - Methods for converting, blittings, copying and resizing sprites with high quality (bilinear filtering, sub-pixel precision).
  - Methods for drawing lines, polylines, polygons, triangles, rectangles, rounded rectangles, quads, circles, arcs, ellipses, Bezier curve and splines.
  - Methods for drawing Text with support for multiple font formats with anti-aliasing
  - Alpha-blending supported for all drawings operations.
  - Several drawing methods come in two flavours: fast' methods and 'high quality' methods which are slower but draw using anti-aliasing and/or sub-pixel precision.
  - Easy interfacing with other libraries for
    - drawing text with TrueType font using the OpenFontRender library
    - drawing JPEG images using the JPEGDEC library
    - drawing PNG images using the PNGdec library
    - drawing (animated) GIF images using the AnimatedGIF library
- Extensive 3D API:
  - Optimized 'pixel perfect' triangle rasterizer with adjustable sub-pixel precision.
  - Depth buffer testing (selectable 16 bits or 32 bits precision).
  - Multiple drawing modes: wireframe (selectable low/high quality) and solid (i.e. with shaders).
  - Flat and Gouraud Shading.
  - Phong lightning's model with separate ambient/diffuse/specular color components.
  - Per object material properties.
  - Perspective-correct texture mapping with selectable point sampling/bilinear filtering and multiple wrapping modes.
  - Perspective and orthographic projections.
  - Optional backface culling.
  - Tile rasterization: it is possible to render the viewport in multiple passes to save RAM.
  - Templates classes for all the needed maths: Vec2, Vec3, Vec4 (vectors), Mat4 (4x4 matrix) and Box2, Box3 (boxes).
  - Optimized mesh data format: meshes and textures can be read directly from flash memory to save RAM.
  - Python scripts provided for easy conversion of texture images and 3D meshes from Wavefront's .obj format into C files.

# Getting started

1. Installation
2. Basic concepts
3. The 2D API.
4. The 3D API.

Note
  Do not forget to have a look at the examples located in `\examples` subfolder of the library.

# References

Basic classes (2D graphics)

Main image object | tgx::Image
Color types | tgx::RGB565,tgx::RGB32,tgx::RGB24,tgx::RGBf,tgx::RGB64,tgx::HSV
2D vectors | tgx::Vec2
2D box | tgx::Box2

Additional classes specific to drawing 3D graphics

Main class for drawing a 3D scene | tgx::Renderer3D
3D model class | tgx::Mesh3D
3D Box | tgx::Box3
3D and 4D vectors | tgx::Vec3, tgx::Vec4
4x4 matrix for 3D (quaternions) | tgx::Mat4