这允许使用同一个
Primitive
绘制多个几何体实例,每个实例都有不同的颜色,如下面第二个示例所示。
Name | Type | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有以下属性的对象:
|
Example:
// A solid white line segment
var primitive = new SuperMap3D.Primitive({
geometryInstances : new SuperMap3D.GeometryInstance({
geometry : new SuperMap3D.SimplePolylineGeometry({
positions : SuperMap3D.Cartesian3.fromDegreesArray([
0.0, 0.0,
5.0, 0.0
])
}),
attributes : {
color : SuperMap3D.ColorGeometryInstanceAttribute.fromColor(new SuperMap3D.Color(1.0, 1.0, 1.0, 1.0))
}
}),
appearance : new SuperMap3D.PerInstanceColorAppearance({
flat : true,
translucent : false
})
});
// Two rectangles in a primitive, each with a different color
var instance = new SuperMap3D.GeometryInstance({
geometry : new SuperMap3D.RectangleGeometry({
rectangle : SuperMap3D.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0)
}),
attributes : {
color : new SuperMap3D.Color(1.0, 0.0, 0.0, 0.5)
}
});
var anotherInstance = new SuperMap3D.GeometryInstance({
geometry : new SuperMap3D.RectangleGeometry({
rectangle : SuperMap3D.Rectangle.fromDegrees(0.0, 40.0, 10.0, 50.0)
}),
attributes : {
color : new SuperMap3D.Color(0.0, 0.0, 1.0, 0.5)
}
});
var rectanglePrimitive = new SuperMap3D.Primitive({
geometryInstances : [instance, anotherInstance],
appearance : new SuperMap3D.PerInstanceColorAppearance()
});
Members
-
staticconstantSuperMap3D.PerInstanceColorAppearance.FLAT_VERTEX_FORMAT : VertexFormat
-
-
staticconstantSuperMap3D.PerInstanceColorAppearance.VERTEX_FORMAT : VertexFormat
-
与所有
PerInstanceColorAppearance
实例兼容的VertexFormat
顶点格式。这只需要位置和 st 属性。 -
为true时,几何体将处于关闭状态,因此
PerInstanceColorAppearance#renderState
将启用背面剔除。如果查看器进入该几何体,它将不可见。-
Default Value:
false
-
为true时,片段着色器会根据需要翻转表面法线,以确保法线面向观察者,避免出现暗点。 当需要对几何体的两侧(如
WallGeometry
)进行着色时,这一点非常有用。-
Default Value:
true
-
为true时,片段着色器中使用平面着色,这意味着不考虑光照。
-
Default Value:
false
-
片段着色器的 GLSL 源代码。
-
material : Material
-
该属性是
Appearance
界面的一部分,但不会被PerInstanceColorAppearance
使用,因为它使用的是完全自定义的片段着色器。-
Default Value:
undefined
-
渲染几何体时使用的 WebGL 固定函数状态。
渲染状态可以在构建
PerInstanceColorAppearance
实例时显式定义,也可以通过PerInstanceColorAppearance#translucent
和PerInstanceColorAppearance#closed
隐式设置。 -
为 true 时,几何体将呈现半透明效果,因此
PerInstanceColorAppearance#renderState
将启用 alpha 混合。-
Default Value:
true
-
readonlyvertexFormat : VertexFormat
-
此外观实例兼容的
VertexFormat
顶点格式。一个几何体可以拥有更多顶点属性,并且仍然是兼容的,但可能要付出性能代价,但不能少。 -
顶点着色器的 GLSL 源代码。
Methods
-
程序化创建完整的GLSL片段着色器源。对于
PerInstanceColorAppearance
来说,这是从PerInstanceColorAppearance#fragmentShaderSource
、PerInstanceColorAppearance#flat
和PerInstanceColorAppearance#faceForward
衍生而来。Returns:
完整的 GLSL 片段着色器源。 -
创建一个呈现状态。这不是最终的呈现状态实例;相反,它可以包含与上下文中创建的呈现状态相同的呈现状态属性子集。
Returns:
The render state. -
根据
PerInstanceColorAppearance#translucent
确定几何体是否半透明。Returns:
如果外观是半透明的,则为 true。