绘制对象-Primitive外观
2019-04-23 15:10:58 来源:admin 点击:758
| |
MaterialAppearance | 支持各种Geometry类型的外观,支持使用材质来定义着色 |
EllipsoidSurfaceAppearan | MaterialAppearance的一个版本。假设几何图形与地表是平行的,并且依此来进行顶点属性(vertex attributes)的计算 |
PerInstanceColorAppearan | 让每个实例使用自定义的颜色来着色 |
PolylineMaterialAppearan | 支持使用材质来着色多段线 |
PolylineColorAppearance | 使用每顶点或者每片段(per-vertex or per-segment )的颜色来着色多段线 |
外观定义了需要在GPU上执行的完整的GLSL顶点、片段着色器,通常不需要修改这一部分,除非需要定义自己的外观。
外观还定义了完整的render state,用于在绘制Primitive时控制GPU的状态,可以直接或者通过高层API来定义render state,下面代码的效果是一样的:
//下面的外观可用于定义一个Viewer不可进入的不透明盒子
效果:
一旦外观被创建,其render state就不可再变,但是其材质是可以替换的。另外Primitive的外观也是不可修改的。
大部分外观具有flat、faceForward属性,可以间接的控制GLSL 着色器:
(1)flat:扁平化着色,不考虑光线的作用
(2)faceForward:布尔值,控制光照效果
需要注意,不是所有外观和所有几何图形可以搭配使用,例如EllipsoidSurfaceAppearan
即使外观与几何图形兼容,它们还必须有匹配的顶点格式(vertex formats)—— 即几何图形必须具有外观可以作为输入的数据格式,在创建Geometry时可以提供VertexFormat。
为了简便,可以让Geometry计算所有顶点属性(vertex attributes),以使之适用于任何外观,但这样做效率较差:
var geometry = new Cesium.RectangleGeometry( {
} );
而如果我们使用外观EllipsoidSurfaceAppearan
var geometry = new Ceisum.RectangleGeometry( {
} );
大部分外观具有vertexFormat属性或者VERTEX_FORMAT 静态常量,创建形状时只需要使用这些顶点格式即可:
var geometry = new Ceisum.RectangleGeometry( {
} );
var geometry2 = new Ceisum.RectangleGeometry( {
} );
var appearance = new Ceisum.MaterialAppearance();
var geometry3 = new Ceisum.RectangleGeometry( {
} );
此外,两个形状必须具有匹配的vertexFormat,才能被合并到一个Primitive中。