Cesium学习笔记-用primitive画虚线

一些基本概念
  • entity和primitive比较
    (1)面向图形开发人员的底层API,通常称为“Primitive API”。该API暴露最小限度的抽象,使用图形学术语,具有很大的灵活性,需要具有图形学编程的知识。
    (2)高级别的数据驱动的API,称为“Entity API”。该API使用一致性设计的、高级别的对象来管理一组相关性的可视化对象,本质是用Primitive封装的api。
  • primitive基础概念
    Primitive由两个部分组成:
    (1)几何形状(Geometry):定义了Primitive的结构,例如三角形、线条、点等。
    (2)外观(Appearance ):定义Primitive的着色(Sharding),包括GLSL(OpenGL着色语言,OpenGL Shading Language)顶点着色器和片段着色器( vertex and fragment shaders),以及渲染状态(render state)。
primitive用法
//正常线
 var scene = viewer.scene;
 var primitive = new Cesium.Primitive({
 	geometryInstances: new Cesium.GeometryInstance({
    	geometry: new Cesium.PolylineGeometry({
        	positions: Cesium.Cartesian3.fromDegreesArray([120.0,40.0,100.0,30.0]),
            width:3.0,
            vertexFormat:Cesium.PolylineColorAppearance.VERTEX_FORMAT
        }),
        attributes: {
        	color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED)
        }
	}),
    appearance: new Cesium.PolylineColorAppearance({
    	translucent: false,  //是否透明
    })
 });
scene.primitives.add(primitive);
//虚线
var primitive1 = new Cesium.Primitive({
 	geometryInstances: new Cesium.GeometryInstance({
    	geometry: new Cesium.PolylineGeometry({
        	positions: Cesium.Cartesian3.fromDegreesArray([110.0,50.0,120.0,60.0]),
            width:3.0,
            vertexFormat:Cesium.PolylineColorAppearance.VERTEX_FORMAT
        })
	}),
    appearance: new Cesium.PolylineMaterialAppearance({
    	material: Cesium.Material.fromType(Cesium.Material.PolylineDashType, {
    		color: Cesium.Color.CYAN,  //线条颜色
        	gapColor:Cesium.Color.TRANSPARENT, //间隔颜色
        	dashLength:20  //短划线长度
    	})
 	})
 });
scene.primitives.add(primitive1);

Material.fromType 参考Cesium Material 说明文档

效果展示

效果展示

总结

使用Primitive画几何图形具有以下优势:
(1)性能:绘制大量Primitive时,可以将其合并为单个Geometry以减轻CPU负担、更好的使用GPU。合并Primitive由web worker线程执行,UI保持响应性。
(2)灵活性:Geometry与Appearance 解耦,两者可以分别进行修改。
(3)低级别访问:易于编写GLSL 顶点、片段着色器、使用自定义的渲染状态 。

同时,具有以下劣势:
(1)需要编写的代码比用Entity要冗长。
(2)需要对图形编程有更多的理解,特别是OpenGL的知识。

参考链接:Cesium中的Entity API和Primitive API的区别(2)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值