# Josh's Graphics Library Yet Another C++ Rendering Toolkit [![License: Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)](http://unlicense.org/) ![Static Badge](https://img.shields.io/badge/Lit-Based-%20) ## Features * Modern C++ (20). * Cross Platform (Linux & Windows 10 1909 or newer). * Provides single-function-calls to render various graphics in 2D and 3D. * Integrates right into an existing OpenGL rendering system. * Quick Rendering of Text, Shapes, Sprites / Textures, etc. * High-performance text rendering. * Little-to-no overhead. ## API Overview ### J2D * DrawPoint * DrawLine / DrawGradientLine / DrawDottedLine / DrawDashedLine / DrawLines * DrawSprite / DrawPartialSprite * DrawRenderTarget / DrawPartialRenderTarget * OutlineRect / OutlineRoundedRect / OutlineChamferRect * FillRect / FillGradientRect / FillRoundedRect / FillChamferRect * OutlineCircle / FillCircle * OutlineTriangle / FillTriangle / FillGradientTriangle * DrawString * DrawCubicBezierCurve * DrawArc * OutlineEllipse / FillEllipse ### J3D * DrawLine * DrawString * DrawMatrixGizmo (WIP) * DrawAxisAngleGizmo (WIP) * DrawQuaternionGizmo (WIP) ### Types * RenderTarget * VRamList * Texture * Font ## Usage ```cpp // Makes sure the glViewport will be the correct size. // Typically done once per frame. JGL::Update(window_size); JGL::J2D::Begin(); JGL::J2D::FillRect(Colors::Blue, {0,0}, {16,16}); JGL::J2D::End(); // See the example program in main.cpp for more in-depth usage. ``` ## Requirements An OpenGL 2.1 or newer accelerator with at-least two texture mappers that supports the `GL_ARB_framebuffer_object` extension or an implementation that can provide those features through alternative means (common on ArmSoC and Risc-V). ## Compatability * AMD ✓ * NVIDIA ✓ * Intel ✓ * Zink (OpenGL-on-Vulkan) ✓ * GL4ES ✓ ## Documentation Documentation is available [here](https://doc.redacted.cc/JGL/d3/dcc/md__r_e_a_d_m_e.html). ## Contributing Contributions to JGL are welcome! If you find a bug, have a feature request, or would like to contribute code, please submit an issue or pull request to our repository! ## Acknowledgements JGL is developed and maintained by Josh O'Leary @ Co from Redacted Software and contributors. Special thanks to Redacted.