- Notifications
You must be signed in to change notification settings - Fork184
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).
License
facebook/igl
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Intermediate Graphics Library (IGL) is a cross-platform library that commands the GPU. It encapsulatescommon GPU functionality with a low-level cross-platform interface. IGL is designed to support multiplebackends implemented on top of various graphics APIs (e.g. OpenGL, Metal and Vulkan) with a common interface.
There are a lot of good options for abstracting GPU API's; each making different trade-offs. We designed IGL around the following priorities:
- Low-level, forward-looking API. IGL embraces modern abstractions (command buffers, state containers, bindless, etc) and is designed to give more control than OpenGL's state machine API. As a result, IGL can have leaner backends for modern API's (e.g. Metal, Vulkan).
- Minimal overhead for C++. IGL supports new or existing native rendering code without overhead of language interop or the need for other language runtimes.
- Reach + scale in production. IGL has been globally battle-tested for broad device reliability (especially the long-tail of Android devices as well as Quest 2/3/Pro compatibility for OpenGL/Vulkan)and performance-tuned on our apps.
- Metal 2+
- OpenGL 2.x (requiresGL_ARB_framebuffer_object)
- OpenGL 3.1+
- OpenGL ES 2.0+
- Vulkan 1.1
- WebGL 2.0
- Android
- iOS
- Linux
- macOS
- Windows
- WebAssembly
Windows | Linux | macOS | iOS | Android | |
---|---|---|---|---|---|
Vulkan 1.1 | ✔️ | ✔️ | ✔️ (MoltenVK) | ✖️ | ✔️ (Quest 2/3/Pro) |
OpenGL ES 2.0 - 3.0 | ✔️ (Angle) | ✔️ (Angle) | ✖️ | ✔️ | ✔️ |
OpenGL ES 3.1 - 3.2 | ✔️ (Angle) | ✔️ (Angle) | ✖️ | ✖️ | ✔️ |
OpenGL 3.1 - 4.6 | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ |
Metal 2 | ✖️ | ✖️ | ✔️ | ✔️ | ✖️ |
Before building, run the deployment scripts:
python3 deploy_content.pypython3 deploy_deps.py
These scripts download external third-party dependencies. Please checkDependencies for the full list.
- Windows
cd buildcmake .. -G "Visual Studio 17 2022"
- Linux
sudo apt-get install clang xorg-dev libxinerama-dev libxcursor-dev libgles2-mesa-dev libegl1-mesa-dev libglfw3-dev libglew-dev libstdc++-12-devcd buildcmake .. -G "Unix Makefiles"
- macOS
cd buildcmake .. -G "Xcode" -DIGL_WITH_VULKAN=OFF
- iOS
cd buildcmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../third-party/deps/src/ios-cmake/ios.toolchain.cmake -DDEPLOYMENT_TARGET=13.0 -DPLATFORM=OS64
- Android
The Gradle project is located within thebuild/android folder.
- WebAssembly
Please installEmscripten andNinja.
cd buildemcmake cmake .. -G Ninjacmake --build .
IGL is released under the MIT license, seeLICENSE.md for the full text as well as third-party libraryacknowledgements. SparkSL Compiler is released under the SparkSL Compiler License, seeLICENSE for full text.
About
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).
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.