Intermediate Graphics Library (IGL) 是 Facebook 开源的跨平台的图形库,它通过一个低级跨平台接口封装了常见的 GPU 功能。IGL 的设计目标是支持多个后端,在各种图形 API(如 OpenGL、Metal 和 Vulkan)之上实现一个通用接口。
IGL 具有如下优势:
-
低级别,前瞻性的 API。IGL 采用现代抽象化技术(如命令缓冲区,状态容器,无绑定等),旨在比 OpenGL 的状态机 API 提供更多控制。因此,IGL 可以为现代 API(例如 Metal,Vulkan)拥有更精简的后端。 -
IGL 在设计时考虑了对 C++语言的最小化额外开销。IGL 允许将新的或已有的本地渲染代码无缝集成进来,而不会增加语言交互的负担,也无需引入其他语言的运行时环境。 -
IGL 在 Android 设备的长尾设备上,以及对 OpenGL/Vulkan 的 Quest 2/3/Pro 经过了充分的测试和验证,通过对 IGL 进行性能调优,可以保证在各种生产环境中,包括大规模用户使用的情况下,IGL 能够高效地运行,不会成为性能瓶颈。
支持的渲染后端
-
Metal 2+ -
OpenGL 2.x -
OpenGL 3.1+ -
OpenGL ES 2.0+ -
Vulkan 1.1 -
WebGL 2.0
支持的平台
-
Android -
iOS -
Linux -
macOS -
Windows -
WebAssembly
API 支持
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 | ✖️ | ✖️ | ✔️ | ✔️ | ✖️ |
构建
在构建之前,运行部署脚本:
python3 deploy_content.py
python3 deploy_deps.py
Windows
cd build
cmake .. -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-dev
cd build
cmake .. -G "Unix Makefiles"
macOS
cd build
cmake .. -G "Xcode" -DIGL_WITH_VULKAN=OFF
iOS
cd build
cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../third-party/deps/src/ios-cmake/ios.toolchain.cmake -DPLATFORM=SIMULATOR64
Android
https://github.com/facebook/igl/tree/main/build/android
WebAssembly
需要安装 Emscripten
and Ninja
cd build
emcmake cmake .. -G Ninja
cmake --build .
截图
传送门
开源协议:MIT
开源地址:https://github.com/facebook/igl
项目合集:https://github.com/OpenTechCol/OpenTechCol
-END-
原文始发于微信公众号(开源技术专栏):Facebook开源高效易用的GPU编程库,适配广泛设备
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155149.html