Olive.c: a simple graphics library that does not have any dependencies

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • olive.c

    Simple 2D Graphics Library for C

  • From demos/triangle.c (https://github.com/tsoding/olive.c/blob/master/demos/triangl...)

        // This idea is that you can take this code and compile it to different platforms with different rendering machanisms:

  • PortableGL

    An implementation of OpenGL 3.x-ish in clean C

  • Yeah PortableGL will never be completely fully featured, not even for OpenGL 3.3 since I'll definitely never do the geometry shader and probably not the transform feedback. But specifically it'll never have the earlier immediate mode stuff, or some of the big 4.0 stuff like the tessellation shaders. I have been meaning to add the DSA functions where they make sense. They'd be really simple to implement.

    Actually a few days ago someone sent me a pull request adding an interesting project to my README

    https://github.com/rswinkle/PortableGL/commit/e0652b4dff266d...

    So now if I were to try to sum up all the OpenGL software implementations I can think of,

    TinyGL (and modern improved forks) = OpenGL 1.1-1.3 ish

  • 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
  • SuperSimpleGraphics

    An SVG generating single header file C library appropriate for "intro to programming" classes in C/C++.

  • ComputerGraphics

    Basic computer graphics implementation , with linux framebuffer (by rtnF14)

  • Years ago, i made something similar as a coursework (Computer Graphics)

    https://github.com/rtnF14/ComputerGraphics

  • stb

    stb single-file public domain libraries for C/C++

  • There are many single-file C "libraries" that work perfectly fine as both "header" and "implementation", and that do not require unity builds (building everything as a single translation unit, e.g., a single .c file). Here is but one famous collection of them: https://github.com/nothings/stb

  • Quake

    Quake GPL Source Release

  • Also look at the source for original Quake (https://github.com/id-Software/Quake), one of the last pure software-rasterizing AAA 3D PC games. Michael Abrash's Graphics Programming Black Book (https://github.com/jagregory/abrash-black-book) explains many of the critical parts of the rendering pipeline.

    By the way, quake.exe for DOS was 404,480 bytes.

  • abrash-black-book

    Markdown source for Michael Abrash's Graphics Programming Black Book

  • Also look at the source for original Quake (https://github.com/id-Software/Quake), one of the last pure software-rasterizing AAA 3D PC games. Michael Abrash's Graphics Programming Black Book (https://github.com/jagregory/abrash-black-book) explains many of the critical parts of the rendering pipeline.

    By the way, quake.exe for DOS was 404,480 bytes.

  • 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
  • incbin

    Include binary files in C/C++

  • won't work, since the preprocessor won't interpret directives inside string literals of course.

    In many assemblers, there is a directive called "incbin" which pastes in unstructured binary data at the point of usage. I just found a very clever C and C++ wrapper [1] for that, which gives you an INCBIN() macro. Nice!

    [1]: https://github.com/graphitemaster/incbin

  • tinyrenderer

    A brief computer graphics / rendering course

  • Cool use of Webassemly. See also the 500 line https://github.com/ssloy/tinyrenderer or the 100 line Python/numpy version https://github.com/rougier/tiny-renderer

    Both cpu renderers with texture mapping and Wavefront obj import without further dependencies.

  • tiny-renderer

    A tiny sotfware 3D renderer in 100 lines of Python

  • Cool use of Webassemly. See also the 500 line https://github.com/ssloy/tinyrenderer or the 100 line Python/numpy version https://github.com/rougier/tiny-renderer

    Both cpu renderers with texture mapping and Wavefront obj import without further dependencies.

  • xplain

    Discontinued Interactive demos

  • aoc-2020

    Advent of Code 2020 in 25 Different Languages

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts