3、Primitive
Cesium 中 Primitive
的概念和组成部分:
1. 几何形状 (Geometry)
几何形状定义了一个 Primitive
的结构,它描述了要渲染的对象的形状。在 Cesium 中,Geometry
对象可以代表多种基本的 3D 形状,例如:
- 三角形 (Triangle)
- 线条 (Line)
- 点 (Point)
- 多边形 (Polygon)
- 圆柱体 (Cylinder)
- 球体 (Sphere)
- 盒子 (Box)
- 圆锥 (Cone)
- 等等
这些几何形状可以通过顶点坐标和其他几何属性来定义。Geometry
对象通常是不可见的,它们只描述了顶点的位置和可能的其他属性,但不包含任何着色信息。
2. 外观 (Appearance)
外观定义了 Primitive
的着色方式。它包含了用于渲染几何形状的着色器程序(GLSL 代码)以及其他渲染状态,例如:
- 顶点着色器 (Vertex Shader):负责处理顶点数据,如位置变换等。
- 片段着色器 (Fragment Shader):决定像素的颜色,通常处理光照计算和纹理贴图。
- 混合模式 (Blend Mode):如何将新绘制的像素与现有像素混合。
- 深度测试 (Depth Test):是否启用深度测试以及如何处理深度比较。
- 透明度 (Transparency):是否开启透明度,以及如何处理半透明对象。
优势
- 性能:通过合并多个
Primitive
成一个更大的Geometry
,可以减少每次渲染调用时的 CPU 开销。这是因为每次 WebGL 渲染调用都会有一定的固定成本,包括上下文切换、状态更改等。合并Primitive
可以显著降低这些成本。 - 灵活性:由于
Geometry
和Appearance
分离,可以在不改变几何形状的情况下更改渲染样式,反之亦然。 - 低级别访问:对于那些需要精细控制渲染流程的情况,可以直接编写 GLSL 着色器,这提供了极大的灵活性。