DepthFunction
是一个用于指定深度测试函数的对象。
new Cesium.DepthFunction();
DepthFunction对象具有以下属性:
名称 | 数据类型 | 描述 |
---|---|---|
ALWAYSPASS | Number | 始终通过深度测试 |
NEVER | Number | 从不通过深度测试 |
LESS | Number | 如果新片段的深度值小于存储在深度缓冲区中的深度值,则通过深度测试 |
EQUAL | Number | 如果新片段的深度值等于存储在深度缓冲区中的深度值,则通过深度测试 |
LESSEQUAL | Number | 如果新片段的深度值小于或等于存储在深度缓冲区中的深度值,则通过深度测试 |
GREATER | Number | 如果新片段的深度值大于存储在深度缓冲区中的深度值,则通过深度测试 |
NOTEQUAL | Number | 如果新片段的深度值不等于存储在深度缓冲区中的深度值,则通过深度测试 |
GREATEREQUAL | Number | 如果新片段的深度值大于或等于存储在深度缓冲区中的深度值,则通过深度测试 |
以下是如何使用DepthFunction
的示例:
//创建渲染器
var viewer = new Cesium.Viewer('cesiumContainer');
//获取场景
var scene = viewer.scene;
//获取摄像机
var camera = viewer.camera;
//设置深度测试函数为LESS
scene.globe.depthTestAgainstTerrain = true;
scene.globe.baseColor = Cesium.Color.WHITE;
scene.globe.depthFunction = Cesium.DepthFunction.LESS;
//创建一个圆
function createCircle(center, radius) {
var positions = [];
for (var i = 0; i < 360; i++) {
var radians = Cesium.Math.toRadians(i);
var x = center.x + radius * Math.cos(radians);
var y = center.y + radius * Math.sin(radians);
positions.push(scene.globe.ellipsoid.cartographicToCartesian(Cesium.Cartographic.fromDegrees(x, y, 0)));
}
return positions;
}
//创建一个圆形实体
var circle = scene.primitives.add(new Cesium.Primitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.PolygonGeometry({
polygonHierarchy : new Cesium.PolygonHierarchy(createCircle(Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), 100000.0))
}),
attributes : {
color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.GREEN)
}
}),
appearance : new Cesium.PerInstanceColorAppearance({
closed : true
})
}));
//设置摄像机位置
camera.setView({
destination : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 2000000.0)
});
https://cesiumjs.org/Cesium/Build/Documentation/DepthFunction.html