基于 Metal 4 与 Vulkan 1.4 的极简 C++20 图形库,用 GPU 指针和描述符堆取代传统缓冲区与绑定模型。
regl-project/regl
一个函数式 WebGL 封装库,通过消除共享状态,把绘制调用描述为命令并编译成优化后的 JavaScript。
- Star
- 5,594
- Fork
- 328
- 未关闭 Issue
- 127
- 最近提交
- 22天前
这是什么?
regl 是一个 JavaScript 库,用两个抽象来封装 WebGL:资源(resource)表示缓冲区、纹理、帧缓冲等 GPU 对象的句柄;命令(command)则完整描述一次绘制调用所需的 WebGL 状态。定义命令时可以混合使用静态与动态数据,regl 会据此生成优化后的 JavaScript 代码,从而减少原生 WebGL 中每次调用的额外开销。
这个库刻意保持精简,不提供场景图、游戏引擎或向量数学工具。WebGL 的全部功能(包括多重渲染目标、实例化绘制等扩展)都可以直接使用。项目没有依赖,除 npm 包外还提供可直接通过 script 标签引入的独立版本,并在开发模式下进行参数校验。
核心功能
- 01用资源和命令两种抽象封装 WebGL,减少共享状态。
- 02通过部分求值把命令定义编译为优化的 JavaScript 代码。
- 03自动将嵌套数组展开为类型化数组用于缓冲区。
- 04提供 regl.frame 封装 requestAnimationFrame,并处理视口变化。
- 05保留 WebGL 的全部功能,包括实例化等扩展。
- 06没有运行时依赖,并提供独立脚本版本。
适用场景
- 在浏览器中构建自定义的 GPU 加速数据可视化。
- 编写需要直接控制 WebGL 的着色器图形或模拟程序。
- 开发需要长期维护、依赖稳定底层渲染接口的 Web 应用。
快速上手
- 1
从 npm 将 regl 安装到你的项目中
npm i -S regl - 2
引入 regl 并创建实例,然后使用 regl.frame 绘制
使用前须知
- 使用 browserify 打包时,除非加上 --debug 标志,否则开发模式的错误检查会被移除。
收录于专题
标签
常见问题
- regl 是什么?
- 一个函数式 WebGL 封装库,通过消除共享状态,把绘制调用描述为命令并编译成优化后的 JavaScript。 regl 是一个 JavaScript 库,用两个抽象来封装 WebGL:资源(resource)表示缓冲区、纹理、帧缓冲等 GPU 对象的句柄;命令(command)则完整描述一次绘制调用所需的 WebGL 状态。定义命令时可以混合使用静态与动态数据,regl 会据此生成优化后的 JavaScript 代码,从而减少原生 WebGL 中每次调用的额外开销。
- regl 可以免费使用吗?用的什么许可证?
- regl 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- regl 还在维护吗?
- 活跃维护中。regl 最近一次提交是在 2026年10月17日。
- regl 适合用来做什么?
- 在浏览器中构建自定义的 GPU 加速数据可视化。 编写需要直接控制 WebGL 的着色器图形或模拟程序。 开发需要长期维护、依赖稳定底层渲染接口的 Web 应用。
- regl 怎么安装和运行?
- 从 npm 将 regl 安装到你的项目中: npm i -S regl 引入 regl 并创建实例,然后使用 regl.frame 绘制
- 在哪里获取 regl?
- 源代码和安装说明在 GitHub 上:https://github.com/regl-project/regl
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
169960C++MIT更新于 昨天
一个用于在浏览器中构建和渲染 3D 场景的 JavaScript 库,基于 WebGL 与 WebGPU。
11.8万+466 本周3.7万JavaScriptMIT更新于 昨天
社区编写的 100 多种 GLSL 图像转场效果集合,可用于网页、移动端、视频工具等多种平台。
2232+16 本周331GLSLOther更新于 22小时前
基于 JavaScript/TypeScript 的 3D 游戏与渲染引擎,可在浏览器中运行,支持 WebGL、WebGPU 和 WebXR。
2.6万+54 本周3722TypeScriptApache-2.0维护活跃更新于 23小时前