Cesium源码解读(一)获取webgl对象

本文深入Cesium源码,探讨如何在cesiumSourceRendererContext.js中获取WebGL对象。通过viewer.scene.context._gl可以获取WebGL对象,而viewer.scene.context.webgl2则用于判断是否支持WebGL2。同时,viewer.scene.canvas和viewer.scene.context.canvas提供了获取canvas对象的方法。
摘要由CSDN通过智能技术生成

webGL对象获取代码在 cesium\Source\Renderer\Context.js 中,关键代码为:

 if (!defined(getWebGLStub)) {
            if (requestWebgl2) {
                glContext = canvas.getContext('webgl2', webglOptions) || canvas.getContext('experimental-webgl2', webglOptions) || undefined;
                if (defined(glContext)) {
                    webgl2 = true;
                }
            }
            if (!defined(glContext)) {
                glContext = canvas.getContext('webgl', webglOptions) || canvas.getContext('experimental-webgl', webglOptions) || undefined;
            }
            if (!defined(glContext)) {
                throw new RuntimeError('The browser supports WebGL, but initialization failed.');
            }
        } else {
            // Use WebGL stub when requested for unit tests
            glContext = getWebGLStub(canvas, webglOptions);
        }
先获取webgl2,如未能获取再获取 webgl
  • 编程中可通过一下方式获取webgl对象

viewer.scene.context._gl

  • 判断是否支持webgl2

viewer.scene.context.webgl2

  • 编程中可通过一下方式获取canavs对象

viewer.scene.canvas

viewer.scene.context.canvas

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium 是一个基于 WebGL 的虚拟地球引擎,可以用来创建交互式地球、地图和其他地理空间应用。Cesium 源代码是一个开源项目,可以在 GitHub 上找到。 Cesium源码结构相对清晰,主要分为以下几个部分: 1. Core:包含 Cesium 的核心代码,如 Cesium 对象、Clock 对象、Event 对象等。 2. DataSources:包含 Cesium 的数据源代码,如 GeoJSONDataSource、KMLDataSource 等。 3. Renderer:包含 Cesium 的渲染器代码,如 WebGLRenderer、SceneRenderer、FrustumCommands 等。 4. ThirdParty:包含 Cesium 使用的第三方库代码,如 glsl-optimizer、knockout、moment、protobuf 等。 5. Widgets:包含 Cesium 的小部件代码,如 InfoBox、NavigationHelpButton、PerformanceWatchdog 等。 6. Workers:包含 Cesium 的 Worker 代码,如 buildPickColors、createVerticesFromPickIds 等。 在阅读 Cesium 源代码时,需要注意以下几点: 1. Cesium 使用的是 ECMAScript 6 (ES6) 语法,需要了解 ES6 的语法规范。 2. Cesium 的源代码使用了大量的模块化编程,需要了解模块化编程的概念和使用。 3. Cesium 的源代码中使用了大量的注释,需要认真阅读注释,了解代码的功能和实现原理。 4. Cesium 的源代码结构相对清晰,可以从多个角度入手,如核心代码、数据源代码、渲染器代码等。 总之,阅读 Cesium 源代码需要有一定的 JavaScript 编程经验和基本的地理空间知识,需要认真阅读代码注释,了解代码的功能和实现原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值