AttributeBinder
定义于: src/data/program_configuration.ts:70
Binder
是用于构建、上传和绑定绘制属性数据作为GLSL属性的策略接口定义;大多数样式规范属性与着色器属性/统一变量有1:1的关系,但某些情况下需要向GPU传递每个要素的多个值,在这些情况下我们绑定多个属性/统一变量;
它有三种实现,分别对应我们使用的三种策略:
- 对于常量属性——那些值是常量,或者是在特定相机位置评估相机表达式的常量结果——我们不需要顶点属性缓冲区,而是使用统一变量;
- 对于数据表达式,我们使用带有单个属性值的顶点缓冲区,该值是给定要素的源函数的评估结果;
- 对于复合表达式,我们使用带有两个属性的顶点缓冲区:最小值和最大值,覆盖我们期望瓦片显示的缩放范围;这些值是通过在战略性选择的缩放级别评估给定要素的复合表达式计算得出的;除了这些属性数据外,我们还使用着色器用于在最终显示的缩放级别插值最小值和最大值之间的统一值;使用统一变量允许我们在每一帧廉价地更新值;
请注意,着色器源代码会根据我们使用统一变量还是属性而变化;我们在运行时动态编译着色器以适应这一点;