Meta Releases Intermediate Graphics Library

This page summarizes the projects mentioned and recommended in the original post on

Our great sponsors
  • JetBrains Dev Survey - What’s up with the C++ ecosystem in 2023?
  • WorkOS - The modern API for authentication & user identity.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • Onboard AI - ChatGPT with full context of any GitHub repo.
  • igl

    Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It provides a single low-level cross-platform interface on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan).

    For an intermediate library, it doesn't seem to be actually very much backend-independent. At least the desktop sample [1] has a disappointing amount of code paths with parallel implementations for OpenGL and Vulkan, switched at compile time using "#if USE_OPENGL_BACKEND".

    I guess this means that this sample will use OpenGL rather than Metal on macOS? They claim there's a Metal backend, but how would one enable that for the "Tiny" sample? By manually adding a third parallel implementation with "#elif USE_METAL_BACKEND" everywhere?


  • sokol

    minimal cross-platform standalone C headers

    If you're looking for something like this, Sokol is a much simpler alternative:

    It doesn't support vulkan though, but if that's important to you you're probably much better off just using vulkan directly since it's supported on all the major platforms.

  • JetBrains Dev Survey

    What’s up with the C++ ecosystem in 2023? JetBrains Developer Ecosystem Survey 2023 has given us many interesting insights. The Embedded (37%) and Games (39%) industries are already working with C++20, developers are incorporating static analysis in their CI, and ChatGPT usage among coders is flourishing. Read on for more!

  • wgpu

    Cross-platform, safe, pure-rust graphics api.

  • rend3

    Easy to use, customizable, efficient 3D renderer library built on wgpu.

    The WGPU people are still working through lock conflicts in that area. The idea with Vulkan land is that you should be able to load content while rendering is in progress. For that to be useful, all the layers above Vulkan also have to have their locking problems hammered out. Most open source game engines don't do that yet. Unreal Engine and Unity do, which is why you pay for them for your AAA title.




  • sokol-tools

    Command line tools for use with sokol headers

    Sokol also provides a solution for shader cross-compilation (, so you only need to write your shaders once no matter if you're targeting OpenGL, Metal, or DirectX.

    There are other tools you could use out there with IGL, but Sokol's solution streamlines the whole process.

  • Godot

    Godot Engine – Multi-platform 2D and 3D game engine

  • libfive

    Infrastructure for solid modeling

    You probably have already seen this, but I would take a look at libfive for inspiration

  • WorkOS

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


    Rendering example with Meta's Intermediate Graphics Library and SFML

    It integrates quite easily with SFML. I took the Tiny example, removed the OpenGL branching and replaced the GLFW code with SFML.

    260 LoC Vulkan / IGL / SFML example:

  • MoltenVK

    MoltenVK is a Vulkan Portability implementation. It layers a subset of the high-performance, industry-standard Vulkan graphics and compute API over Apple's Metal graphics framework, enabling Vulkan applications to run on macOS, iOS and tvOS.

    Khronos maintains MoltenVk though, which is "official" as it gets:

    ...technically, Vulkan on Windows is also only supported via 3rd-parties (the GPU vendors), Microsoft doesn't support Vulkan either ;)

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