帶有顏色屬性的
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
半透明。