C++ Graphics

Open-source C++ projects categorized as Graphics

Top 23 C++ Graphic Projects

  • aseprite

    Animated sprite editor & pixel art tool (Windows, macOS, Linux)

  • Project mention: Backdoor in upstream xz/liblzma leading to SSH server compromise | news.ycombinator.com | 2024-03-29
  • tinyrenderer

    A brief computer graphics / rendering course

  • Project mention: From scratch OpenGL and shaders with raw Xlib | news.ycombinator.com | 2024-03-30

    I don’t think that exists (I sure would like for it to), but until it does you could amuse yourself with:

    - A 500-line (non-OpenGL-compatible) 3D rasterizer: https://github.com/ssloy/tinyrenderer/wiki.

    - A “hello Wayland” app written in C without libwayland or anything else: https://gaultier.github.io/blog/wayland_from_scratch.html.

    - A “hello X11” app written in x86-64 assembly(!) without libX11, libxcb, or anything else: https://gaultier.github.io/blog/x11_x64.html.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • filament

    Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2

  • Project mention: Filament – A Language for Fearless Hardware Design | news.ycombinator.com | 2024-03-04

    Also: Filament is a real-time physically-based renderer written in C++. It is mobile-first, but also multi-platform.


  • 3d-game-shaders-for-beginners

    🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.

  • Project mention: The Book of Shaders | news.ycombinator.com | 2024-01-09

    This is a great series if you’re looking for a tutorial. https://lettier.github.io/3d-game-shaders-for-beginners/inde...

  • bgfx

    Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

  • Project mention: WebKit Switching to Skia for 2D Graphics Rendering | news.ycombinator.com | 2024-02-20
  • DearPyGui

    Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies

  • Project mention: PysimpleGUI | news.ycombinator.com | 2023-12-08

    For native GUI, DearPyGui[0] as modern as you can.

    For browser web-based GUI, you can use nicegui[1]

    [0] -- https://github.com/hoffstadt/DearPyGui

    [1] -- https://github.com/zauberzeug/nicegui

  • OpenFrameworks

    openFrameworks is a community-developed cross platform toolkit for creative coding in C++.

  • Project mention: Resolume | news.ycombinator.com | 2024-03-14

    Not exactly VJ, but could be used for it. https://openframeworks.cc

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • SFML

    Simple and Fast Multimedia Library

  • Project mention: Ask HN: How to create a simple 2D game in C? | news.ycombinator.com | 2024-01-27

    Take a look at SFML. Very easy to get started, and quite capable.


  • Skia

    Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

  • Project mention: Skia VS nitro-gl - a user suggested alternative | libhunt.com/r/skia | 2023-08-21
  • renderdoc

    RenderDoc is a stand-alone graphics debugging tool.

  • Project mention: Building the DirectX shader compiler better than Microsoft? | news.ycombinator.com | 2024-02-10
  • tinyraytracer

    A brief computer graphics / rendering course

  • Project mention: But can it raytrace? | /r/termux | 2023-10-16

    Source: https://github.com/ssloy/tinyraytracer

  • magnum

    Lightweight and modular C++11 graphics middleware for games and data visualization

  • glslViewer

    Console-based GLSL Sandbox for 2D/3D shaders

  • LibreSprite

    Animated sprite editor & pixel art tool -- Fork of the last GPLv2 commit of Aseprite

  • Project mention: Great news, macOS users! 🍎 | /r/LibreSprite | 2023-05-19

    We're thrilled to announce that LibreSprite is finally available for macOS! 📷📷 A big shoutout to u/Booga y u/FManga for making this possible! Download LibreSprite for macOS

  • matplotplusplus

    Matplot++: A C++ Graphics Library for Data Visualization 📊🗾

  • Project mention: Creating k-NN with C++ (from Scratch) | dev.to | 2024-01-11

    cmake_minimum_required(VERSION 3.5) project(knn_cpp CXX) # Set up C++ version and properties include(CheckIncludeFileCXX) check_include_file_cxx(any HAS_ANY) check_include_file_cxx(string_view HAS_STRING_VIEW) check_include_file_cxx(coroutine HAS_COROUTINE) set(CMAKE_CXX_STANDARD 20) set(CMAKE_BUILD_TYPE Debug) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # Copy data file to build directory file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/iris.data DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) # Download library usinng FetchContent include(FetchContent) FetchContent_Declare(matplotplusplus GIT_REPOSITORY https://github.com/alandefreitas/matplotplusplus GIT_TAG origin/master) FetchContent_GetProperties(matplotplusplus) if(NOT matplotplusplus_POPULATED) FetchContent_Populate(matplotplusplus) add_subdirectory(${matplotplusplus_SOURCE_DIR} ${matplotplusplus_BINARY_DIR} EXCLUDE_FROM_ALL) endif() FetchContent_Declare( fmt GIT_REPOSITORY https://github.com/fmtlib/fmt.git GIT_TAG 7.1.3 # Adjust the version as needed ) FetchContent_MakeAvailable(fmt) # Add executable and link project libraries and folders add_executable(${PROJECT_NAME} main.cc) target_link_libraries(${PROJECT_NAME} PUBLIC matplot fmt::fmt) aux_source_directory(lib LIB_SRC) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_sources(${PROJECT_NAME} PRIVATE ${LIB_SRC}) add_subdirectory(tests)

  • Vulkan-Samples

    One stop solution for all Vulkan samples

  • Project mention: Google's First Tensor Processing Unit: Architecture | news.ycombinator.com | 2024-03-31

    Vulcan is a driver-level API. It competes with DirectX and OpenGL.

    CUDA is a language you write kernels. It competes with OpenAI's Triton language.

    Here's what CUDA looks like: https://github.com/tspeterkim/flash-attention-minimal/blob/m...

    This is what Triton looks like: https://triton-lang.org/main/getting-started/tutorials/06-fu...

    By contrast Vulcan looks like this: https://github.com/KhronosGroup/Vulkan-Samples/blob/main/sam...

    (It's true to some extent that maybe you could use Vulcan shaders to write deep learning kernels, maybe? I'm not aware of anyone doing it though)

  • Ogre 3D

    scene-oriented, flexible 3D engine (C++, Python, C#, Java)

  • Project mention: Not only Unity... | /r/opensourcegames | 2023-11-11

    OGRE (MIT/C++) https://github.com/OGRECave/ogre

  • Atomic Game Engine

    The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

  • OpenSceneGraph

    OpenSceneGraph git repository

  • Open-Source Vulkan C++ API

    Open-Source Vulkan C++ API

  • Project mention: what math is required? | /r/vulkan | 2023-07-05

    It might be useful to maybe look at the Vulkan.hpp examples since you can do the same in about 200 lines of code. https://github.com/KhronosGroup/Vulkan-Hpp/blob/main/samples/15_DrawCube/15_DrawCube.cpp

  • OpenSubdiv

    An Open-Source subdivision surface library.

  • yocto-gl

    Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics

  • DirectXTK

    The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

  • Project mention: I need help to make SSE Display Tweaks work. | /r/skyrimmods | 2023-10-09

    LoadScreenAllow= LoadScreenBlock=All Note: In cases where only loadscreens with conditions are allowed, it is possible that none will show even if no others are available. LoadScreenFilter=false LoadScreenAllow= LoadScreenBlock=All Remove all lens flare from weather records. This is done in-memory and is not persistent. DisableWeatherLensFlare=false Disable actor fade when camera intersects the body. DisableActorFade=false Disable player fade when camera intersects the body. DisablePlayerFade=false [OSD] Enable the on-screen display. Enable=false InitiallyOn=true Comma separated list of displayed stats. fps - Framerate bare_fps - Just the framerate, no formatting frametime - Frametime bare_frametime - Just the frametime, no formatting counter - Frame counter vram - Video ram usage (used / budget) * all - Everything * Note that this line does not show total amount of memory available but rather the OS allocated budget which can vary based on how much is consumed by other applications. If usage exceeds the budget, you'll likely experience stuttering. Requires DXGI 1.4. Stats related to specific drivers are configured in their respective sections. Show=fps,vram How often the OSD updates (in seconds). UpdateInterval=0.3 Keys used used to toggle the OSD. ComboKey uses built-in constants, ToggleKey is a DX scan code (https://www.creationkit.com/index.php?title=Input\_Script) ComboKey: 1 - Left Shift 2 - Right Shift 3 - Left Control 4 - Right Control 5 - Left Alt 6 - Right Alt 7 - Left Win 8 - Right Win ComboKey=1 and ToggleKey=0xD2 is Left Shift + Insert ComboKey=1 ToggleKey=0xD2 Align the OSD. 1 - Top Left 2 - Top Right 3 - Bottom Left 4 - Bottom Right Align=1 OSD position offset (X Y). Offset=4 4 Font scale (X Y) Omit Y for uniform scaling Scale=1.0 0.9 Adjust font scale based on amount of lines drawn. AutoScale=true Scale font size based on window size. Size remains constant when resolution to window size ratio != 1, for example when playing at non-native resolutions. ScaleToWindow=true Set a custom font. You can generate bitmaps from fonts installed on your system with MakeSpriteFont. https://github.com/microsoft/DirectXTK/wiki/MakeSpriteFont Run the tool with /NoPremultiply and place files in Data\SKSE\Plugins\SDTFonts FontFile= Font and outline color (RGBA). Color=255 255 255 255 OutlineColor=0 0 0 255 Outline offset. OutlineOffset=1 "

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-03-31.

C++ Graphics related posts


What are some of the best open-source Graphic projects in C++? This list will help you:

Project Stars
1 aseprite 26,401
2 tinyrenderer 19,305
3 filament 17,052
4 3d-game-shaders-for-beginners 16,993
5 bgfx 14,292
6 DearPyGui 12,184
7 OpenFrameworks 9,771
8 SFML 9,578
9 Skia 8,614
10 renderdoc 8,383
11 tinyraytracer 4,880
12 magnum 4,645
13 glslViewer 4,445
14 LibreSprite 4,325
15 matplotplusplus 3,909
16 Vulkan-Samples 3,898
17 Ogre 3D 3,714
18 Atomic Game Engine 3,131
19 OpenSceneGraph 3,073
20 Open-Source Vulkan C++ API 2,909
21 OpenSubdiv 2,824
22 yocto-gl 2,763
23 DirectXTK 2,480
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives