带有颜色属性的
new PerInstanceColorAppearance(options)
GeometryInstance
实例的外观。这允许使用下面第二个示例中所示的相同Primitive
绘制多个不同颜色的几何体实例。
Parameters:
options
(Object)
Name | Description |
---|---|
options.flat
Boolean
default false
|
当true 时,片段着色中使用平面着色,这意味着不考虑照明。
|
options.faceForward
Boolean
default !options.closed
|
当true 时,片段明暗器会根据需要翻转曲面法线,以确保法线面向查看器以避免出现黑点。当几何图形的两边都应该像WallGeometry 那样加阴影时,这很有用。
|
options.translucent
Boolean
default true
|
当true 时,几何体将显示为半透明,因此PerInstanceColorAppearance#renderState 启用了alpha混合。
|
options.closed
Boolean
default false
|
当true 时,几何图形将关闭,因此PerInstanceColorAppearance#renderState 启用背面剔除。
|
options.vertexShaderSource
String
|
可选的glsl顶点明暗器源覆盖默认的顶点明暗器。 |
options.fragmentShaderSource
String
|
可选的glsl fragment shader source覆盖默认的fragment shader。 |
options.renderState
RenderState
|
可选的渲染状态以覆盖默认的渲染状态。 |
Example
// A solid white line segment
var primitive = new bmgl.Primitive({
geometryInstances : new bmgl.GeometryInstance({
geometry : new bmgl.SimplePolylineGeometry({
positions : bmgl.Cartesian3.fromDegreesArray([
0.0, 0.0,
5.0, 0.0
])
}),
attributes : {
color : bmgl.ColorGeometryInstanceAttribute.fromColor(new bmgl.Color(1.0, 1.0, 1.0, 1.0))
}
}),
appearance : new bmgl.PerInstanceColorAppearance({
flat : true,
translucent : false
})
});
// Two rectangles in a primitive, each with a different color
var instance = new bmgl.GeometryInstance({
geometry : new bmgl.RectangleGeometry({
rectangle : bmgl.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0)
}),
attributes : {
color : new bmgl.ColorGeometryInstanceAttribute(1.0, 0.0, 0.0, 0.5)
}
});
var anotherInstance = new bmgl.GeometryInstance({
geometry : new bmgl.RectangleGeometry({
rectangle : bmgl.Rectangle.fromDegrees(0.0, 40.0, 10.0, 50.0)
}),
attributes : {
color : new bmgl.ColorGeometryInstanceAttribute(0.0, 0.0, 1.0, 0.5)
}
});
var rectanglePrimitive = new bmgl.Primitive({
geometryInstances : [instance, anotherInstance],
appearance : new bmgl.PerInstanceColorAppearance()
});
Members
(static, constant) FLAT_VERTEX_FORMAT : VertexFormat
当
PerInstanceColorAppearance#flat
为true
时,所有PerInstanceColorAppearance
实例都兼容的VertexFormat
。这只需要一个position
属性。
(static, constant) VERTEX_FORMAT : VertexFormat
(readonly) closed : Boolean
当
true
时,几何图形将关闭,因此PerInstanceColorAppearance#renderState
启用背面剔除。如果查看器进入几何图形,它将不可见。
-
Default Value:
false
(readonly) faceForward : Boolean
当
true
时,片段明暗器会根据需要翻转曲面法线,以确保法线面向查看器以避免出现黑点。当几何图形的两边都应该像WallGeometry
那样加阴影时,这很有用。
-
Default Value:
true
(readonly) flat : Boolean
当
true
时,片段着色中使用平面着色,这意味着不考虑照明。
-
Default Value:
false
(readonly) fragmentShaderSource : String
片段明暗器的glsl源代码。
material : Material
此属性是
Appearance
接口的一部分,但PerInstanceColorAppearance
不使用,因为使用了完全自定义的片段明暗器。
-
Default Value:
undefined
(readonly) renderState : Object
呈现几何图形时要使用的WebGL固定函数状态。
在构造PerInstanceColorAppearance
实例时,可以显式定义呈现状态,也可以通过PerInstanceColorAppearance#translucent
和PerInstanceColorAppearance#closed
隐式设置呈现状态。
translucent : Boolean
当
true
时,几何体将显示为半透明,因此PerInstanceColorAppearance#renderState
启用了alpha混合。
-
Default Value:
true
(readonly) vertexFormat : VertexFormat
此外观实例与之兼容的
VertexFormat
。几何体可以有更多的顶点属性,并且仍然是兼容的(以潜在的性能代价),但是它不能有更少的顶点属性。
(readonly) vertexShaderSource : String
顶点明暗器的glsl源代码。
Methods
getFragmentShaderSource() → {String}
程序创建完整的glsl片段明暗器源。对于
PerInstanceColorAppearance
,这是从PerInstanceColorAppearance#fragmentShaderSource
、PerInstanceColorAppearance#flat
和PerInstanceColorAppearance#faceForward
导出的。
创建渲染状态。这不是最终的渲染状态实例;相反,它可以包含与上下文中创建的渲染状态相同的渲染状态属性的子集。
确定几何图形是否基于
PerInstanceColorAppearance#translucent
半透明。