经纬志 看得懂 · 跑得起来
首页 / luma.gl

luma.gl

deck.gl 底层的 WebGL 框架。需要自己写渲染管线、管理缓冲与着色器时,它比裸 WebGL 省事,也支持 WebGPU 的新接口。

luma.gl 9.4 · 教程 13 篇 · API 25 个 · 示例 8 个

一句话概览:luma.gl 是 deck.gl 底层的 WebGL 与 WebGPU 框架,封装了设备、缓冲、纹理、着色器与渲染管线。它不提供现成图表,而是让你用较少的样板代码自己组织绘制流程,适合需要自定义着色器的可视化场景。

教程13 篇

01

AnimationLoop 与时间驱动

循环负责三件事:等设备就绪、按帧调用渲染回调、停止时释放资源。 它不能替应用管理 GPU 资源,只能在正确的时机把时间与尺寸…

02

画布、尺寸与设备像素比

画布有两套尺寸:CSS 尺寸决定它在页面里占多大,绘制缓冲尺寸决定真正画多少像素。 两者之比就是设备像素比。luma.gl…

03

社区精选资源

luma.gl 的资料基本集中在官方仓库与文档站,第三方教程很少,且大多停留在 8.x 的 gl 上下文写法。 这一页按"先…

04

调试与性能

GPU 出错时最常见的表现是「什么都没有」:没有异常、没有日志、画面全黑。 luma.gl 提供了几组开关把这类问题暴露出来…

05

Device 与渲染管线

luma.gl 9 把所有 GPU 资源收到一个设备对象下,绘制不再是「用 program 画」, 而是「编译着色器、组装管…

06

几何与缓冲布局

顶点数据进入 GPU 之前要经过三层:类型化数组、缓冲、布局声明。 v9 把 CPU 几何与 GPU 缓冲彻底分开,Geom…

07

用离屏渲染做通用计算

WebGL2 没有计算着色器,通用的 GPU 计算只能借渲染管线完成: 把数据放进纹理,用全屏三角形逐像素算,结果再写进另一…

08

luma.gl 与 deck.gl 的关系

deck.gl 画出的每一个图层,最终都落到 luma.gl 的缓冲区、着色器与绘制调用上。 理解这一层,才能判断什么时候该…

09

用 luma.gl 直接写一个 WebGL 程序

不经过 deck.gl,只用 luma.gl 画一个三角形。流程是:创建设备、写缓冲区、 组装模型、开渲染通道、绘制。每一步…

10

渲染通道与离屏

通道决定这一批绘制画到哪里。画到画布是最常见的情况, 画到帧缓冲则开启离屏渲染,它是后期处理、拾取与多通道合成的共同基础。

11

着色器与模块化

着色器在 v9 里先编译成独立的 Shader 对象,再交给管线。 模块化不是继承,而是把一段 GLSL 与注入点打包成普通…

12

纹理与采样器

纹理是 GPU 上的像素容器,采样器是读取这些像素的规则。 v9 把两者拆成独立资源:采样器可以挂在纹理上作为默认值, 也可…

13

WebGL2 与 WebGPU 的差异

luma.gl 9 把两个后端收在同一套接口下,但差异不会消失,只会被推迟到运行期。 适配器、着色器语言、管线的可变性、附件…

API 文档25 个

使用示例8 个

常见问题

luma.gl 和 deck.gl 是什么关系?
deck.gl 构建在 luma.gl 之上:deck.gl 提供图层与数据模型,luma.gl 负责底层的设备、缓冲、着色器与绘制。想直接用现成图层就用 deck.gl,想自己控制渲染管线就用 luma.gl。
为什么 new Program 用不了?
luma.gl 9 已经用 Shader 加 RenderPipeline 取代了旧的 Program。升级后要先创建 Shader(顶点与片元),再组合成 RenderPipeline,最后 pipeline.draw。旧教程里的 Program 写法在新版本里会直接报错。
一定要用 WebGPU 吗?
不必须。luma.gl 9 同时支持 WebGL2 与 WebGPU,通过 webgl2Adapter 就能在 WebGL2 上运行,本站示例都是这种模式。只有在需要计算着色器或新特性时才需要 WebGPU。