首页 / luma.gl / 使用示例
彩色三角形
三个顶点各给一种颜色,三个角分别是红、黄、蓝,中间由 GPU 自动插值成渐变。 这一步是顶点属性、varying 与片元着色器的最小配合。
源码与运行效果
说明
位置与颜色各占一个缓冲区,两个都声明为 float32x3。
顶点着色器把颜色写进 out vec3 vColor,片元着色器用同名的
in vec3 vColor 接收。顶点之间的颜色由光栅化阶段线性插值,
不需要在着色器里写任何混合逻辑。
「换一组配色」按钮只重写颜色缓冲区,位置、着色器与布局都不变。 这是数据与渲染分离的最小示例:几何结构固定,视觉属性可以随时替换。
| 项目 | 取值 | 说明 |
|---|---|---|
| 属性数量 | 2 | positions 与 colors |
| 属性格式 | float32x3 | 三个 32 位浮点分量 |
| 图元 | triangle-list | 每三个顶点一个三角形 |
| 插值 | 光栅化自动完成 | 片元颜色是三个顶点颜色的加权平均 |
| 更新方式 | buffer.write | 只覆盖颜色缓冲,不重建模型 |
| 用途 | VERTEX | COPY_DST | 既能被读取,也允许写入 |
varying 的方向
顶点着色器的 out 与片元着色器的 in 必须同名、同类型。
只写一边,链接会失败;名字拼错,链接同样失败,但错误信息不一定直观。
这类问题优先检查两段着色器的变量声明是否逐字一致。
颜色插值的实际用途
顶点颜色在 GIS 里常用于表达连续场:把高程、温度、浓度写到顶点上, 面片内部的过渡由 GPU 完成,比预生成整张贴图更省内存。 缺点是颜色精度受顶点密度限制,稀疏网格上色带会显得生硬。
片元着色器要声明输出。GLSL 300 es 不再使用 gl_FragColor,
必须写 out vec4 fragColor 并显式赋值。混用旧写法会直接编译失败。