PerInstanceColorAppearance

new LSGlobe.PerInstanceColorAppearance ( options )

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

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

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

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

Members

static constant LSGlobe.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT : VertexFormat

所有 PerInstanceColorAppearance 实例的 VertexFormat PerInstanceColorAppearance#flat true 时兼容。这仅需要 position 属性。

static constant LSGlobe.PerInstanceColorAppearance.VERTEX_FORMAT : VertexFormat

所有 PerInstanceColorAppearance 实例的 VertexFormat 与兼容。这只需要 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:
真正 如果外观是半透明的。