cesium源码目录结构详解

cesium源码目录结构

本文讲解的是cesium1.94.3版本的源码的结构(构建后),项目启动后直接运行index.html

cesium-source-1.94.3目录结构

一、Apps

基于 Source 目录下的源码直接创建出来的现成应用程序。
包含HelloWorld.html、CesiumViewer/index.html、Sandcastle(沙盒)的各种示例等程序,项目启动后可直接进行访问。
Apps

二、Build

运行npm run build或其他打包指令后,这个文件夹才会出现。
Build/Cesium 这个文件夹就是其他项目开发可以直接引用的脚本,包含四大静态资源文件Assets、ThirdParty、Widgets、Workers。
CesiumUnminified 是未压缩版本。
Documentation 打包构建的开发者文档。

build

三、 Documentation

开发者API文档

四、Specs 目录

测试代码目录。子目录结构与 Source 下的基本一样,要测试某个模块,则测试文件以那个模块的文件名 + Spec 尾缀
测试框架是 jasmine-core。

五、ThirdParty 目录

第三方依赖库,CesiumJS 不希望安装在 node-package-dependencies 列表中的就放在这里,手动升级,并将依赖列表写入根目录下的 ThirdParty.extra.json 文件内。
每当执行 run prepare 后,gulp 就会把这个目录里面的一些资源(测试框架、Draco 库等)复制到指定位置。

六、 Tools 目录

gulp 部分任务需要用到的工具库或配置,例如 rollup 额外配置、jsdoc 配置等。

七、Source 最重要的在这里!!

CesiumJS 的前端库部分,主要就是在 Source 目录下的。目前,Source 目录下的代码文件绝大多数已完成 ESModule 改造,含少量 css 文件。

虽然几乎所有的源码都是 ESModule 的,但是这个 Source 目录并没有 node 包经典的索引文件 index.js;Source 目录的入口索引文件,是要运行 build 指令后才会出现的,文件名是 Cesium.js;这个入口索引文件也没什么东西,主要是导出源码中的所有模块,无论公开私有,以及着色器字符串,以及当前 CesiumJS 的版本号。

下面对 Source 目录的各个子文件夹作说明:
source

1、Core 辅助

数学 API、Geometry API、高频辅助函数、资源与请求 API、Terrain API 等;

2、Renderer,渲染模块

封装并扩展了 WebGL 原生接口,例如 Framebuffer 对应 WebGLFramebuffer 等;

3、Scene,场景模块

基于上述 Core 模块和 Renderer 模块,CesiumJS 的三维世界由此模块创建,包括 Primitive API、Model API、Globe/QuadtreePrimitive API、GPUPicking API、3DTiles API 等重要 API,通常称之为 Scene 模块,是 CesiumJS 的基石;含 ModelExperimental 新架构和 GltfPipeline 子模块;

4、DataSources

基于上述 Scene 模块中较为底层的三维 API 再次封装出来的上层 API,包括 Entity API、Property API 和 DataSource API,旨在更易接入人类友好型数据格式,例如 Gpx、KML、GeoJson 以及 CesiumJS 官方设计的 Czml,熟读之后可以自行创建,这三个 API 要结合 Viewer 使用,单独的 Scene 模块无法运行;

5、Shaders 着色器代码

后缀名是 .glsl 的着色器代码文件,build 指令运行后生成同名的 ESModule js 模块文件,导出着色器代码的字符串;

6、Assets 静态资源

图片等静态资源,例如默认天空盒、离线两级世界影像(TMS)等

7、ThirdParty 第三方库

例如 draco 解码库以及相关的 worker 等;

8、Widgets

带 UI 的一些功能型类,例如大家熟悉的 Viewer、Timeline、BaseLayerPicker,样式文件也在此目录下;

9、Worker & WorkerES6

WebWorker 文件,后者是源码,前者是根据后者在运行 build 指令后生成的 requirejs 版本。

其他:更高版本的Cesium主要源代码不是在Sources目录里的,而是存在于packages文件夹里
packages下的engine文件夹下是核心代码,包括渲染函数、数据API等
packages下的widgets文件夹下是窗体代码,包括Viewer和各种组件等
packages

参考文章: CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值