PerInstanceColorAppearance

new Cesium.PerInstanceColorAppearance ( options )

具有颜色属性的 GeometryInstance 实例的外观。这允许使用相同的 Primitive 绘制多个几何实例,每个实例具有不同的颜色,如下面的第二个示例所示。
Name Type Description
options Object 具有以下属性的 可选 对象:
姓名 类型 默认 描述
flat 布尔值 false 可选 当为 true 时,片段着色器中使用平面着色,这意味着不考虑光照。
faceForward 布尔值 !options.closed 可选 true 时,片段着色器根据需要翻转表面法线,以确保法线面向观察者以避免黑点。当几何图形的两侧都应像 WallGeometry 一样着色时,这很有用。
translucent 布尔值 true 可选 true 时,几何体应该是半透明的,因此 PerInstanceColorAppearance#renderState 启用了 alpha 混合。
closed 布尔值 false 可选 true 时,几何体应该是关闭的,因此 PerInstanceColorAppearance#renderState 启用了背面剔除。
vertexShaderSource 细绳 optional 可选的 GLSL 顶点着色器源,用于覆盖默认顶点着色器。
fragmentShaderSource 细绳 optional 可选的 GLSL 片段着色器源,用于覆盖默认片段着色器。
renderState 目的 optional 可选的渲染状态,用于覆盖默认渲染状态。
Example:
// A solid white line segment
const primitive = new Cesium.Primitive({
  geometryInstances : new Cesium.GeometryInstance({
    geometry : new Cesium.SimplePolylineGeometry({
      positions : Cesium.Cartesian3.fromDegreesArray([
        0.0, 0.0,
        5.0, 0.0
      ])
    }),
    attributes : {
      color : Cesium.ColorGeometryInstanceAttribute.fromColor(new Cesium.Color(1.0, 1.0, 1.0, 1.0))
    }
  }),
  appearance : new Cesium.PerInstanceColorAppearance({
    flat : true,
    translucent : false
  })
});

// Two rectangles in a primitive, each with a different color
const instance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0)
  }),
  attributes : {
    color : new Cesium.ColorGeometryInstanceAttribute(1.0, 0.0, 0.0, 0.5)
  }
});

const anotherInstance = new Cesium.GeometryInstance({
  geometry : new Cesium.RectangleGeometry({
    rectangle : Cesium.Rectangle.fromDegrees(0.0, 40.0, 10.0, 50.0)
  }),
  attributes : {
    color : new Cesium.ColorGeometryInstanceAttribute(0.0, 0.0, 1.0, 0.5)
  }
});

const rectanglePrimitive = new Cesium.Primitive({
  geometryInstances : [instance, anotherInstance],
  appearance : new Cesium.PerInstanceColorAppearance()
});

Members

static constant Cesium.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT : VertexFormat

VertexFormat PerInstanceColorAppearance#flat true 时,所有 PerInstanceColorAppearance 实例都兼容的 VertexFormat 。这只需要一个 position 属性。

static constant Cesium.PerInstanceColorAppearance.VERTEX_FORMAT : VertexFormat

所有 VertexFormat 实例都兼容的 PerInstanceColorAppearance 。这仅需要 position normal 属性。
当为 true 时,几何体预计会关闭,因此 PerInstanceColorAppearance#renderState 启用了背面剔除。如果查看者进入几何图形,它将不可见。
Default Value: false

readonly faceForward : Boolean

当为 true 时,片段着色器会根据需要翻转表面法线,以确保法线面向观察者以避免黑点。当几何图形的两侧都应像 WallGeometry 一样着色时,这很有用。
Default Value: true
当为 true 时,片段着色器中使用平面着色,这意味着不考虑光照。
Default Value: false

readonly fragmentShaderSource : String

片段着色器的 GLSL 源代码。
此属性是 Appearance 接口的一部分,但 PerInstanceColorAppearance 不使用此属性,因为使用了完全自定义的片段着色器。
Default Value: undefined

readonly renderState : Object

渲染几何图形时使用的 WebGL 固定功能状态。

渲染状态可以在构造 PerInstanceColorAppearance 实例时显式定义,也可以通过 PerInstanceColorAppearance#translucent PerInstanceColorAppearance#closed 隐式设置。

当为 true 时,几何体应该是半透明的,因此 PerInstanceColorAppearance#renderState 启用了 alpha 混合。
Default Value: true
此外观实例兼容的 VertexFormat 。一个几何图形可以有更多的顶点属性并且仍然是兼容的——以潜在的性能成本为代价——但它不能少。

readonly vertexShaderSource : String

顶点着色器的 GLSL 源代码。

Methods

getFragmentShaderSource () String

Returns:
完整的 GLSL 片段着色器源。

getRenderState () Object

创建渲染状态。这不是最终的渲染状态实例;相反,它可以包含与在上下文中创建的渲染状态相同的渲染状态属性的子集。
Returns:
渲染状态。

isTranslucent () Boolean

根据 PerInstanceColorAppearance#translucent 确定几何体是否半透明。
Returns:
如果外观是半透明的,则为 true