cesium 绘制primitive流程(三)执行渲染命令过程

cesium 绘制primitive流程(三)执行渲染命令过程,第1张

我们从下面去观察cesium是怎样执行primitive的渲染命令

1,初始化cesium场景时候会默认执行CesiumWidget类里面的startRenderLoop方法,该方法的作用是
调用浏览器requestAnimationFrame方法循环执行widgetrender方法进行渲染,我们再看看

CesiumWidget里面的rander方法,这个方法调用了sceneinitializeFrame()进行初始化一帧,Clocktick()方法触发时钟更新当前时间,Scenerender方法进行渲染。我们再看看Scenerender方法
该方法大致做了以下几件事,更新帧数,预先更新3dtiles数据,预先更新相机飞行的3dtiles数据,调用render方法等

我们看看Scenerender方法,该方法内部调用SceneupdateAndExecuteCommands方法
SceneprototypeupdateAndExecuteCommands方法根据frameStatemode变量判断是否是3d场景然后执行executeCommandsInViewport方法渲染视口内的图元,

调用Scene类里的executeCommands方法执行绘制命令
executeCommands方法内先执行和环境相关的,例如天空盒,太阳,月亮等渲染指令。
接着根据遍历视锥体数组,依次执行单个视锥体的渲染命令。
先PassGLOBE(椭球体),接着PassTERRAIN_CLASSIFICATION(贴地形),接着PassCESIUM_3D_TILE(3dtiles),PassCESIUM_3D_TILE_CLASSIFICATION(贴着3dtiles),接着PassCESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,接着PassOPAQUE(不透明的),PassTRANSLUCENT(透明的),PassOVERLAY(遮盖物)
然后会触发DrawCommandprototypeexecute方法
进入Centextdraw方法
该方法先设置帧缓冲区,渲染状态,uniform变量,然后调用beginDraw方法
在beginDraw方法绑定帧缓冲区,应用渲染状态(例如开启深度测试,模板测试,混合等),绑定着色程序,并限制最大纹理单元数量。

然后执行continueDraw方法
设置模型矩阵,设置uniform变量,绑定顶点数组,根据绘制的实例数量和是否有顶点索引来决定使用context_gldrawElements,contextglDrawElementsInstanced,context_gldrawArrays,contextglDrawArraysInstanced其中一种方法

以上就是关于cesium 绘制primitive流程(三)执行渲染命令过程全部的内容,包括:cesium 绘制primitive流程(三)执行渲染命令过程、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9698549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存