cesium源码研究关于ShaderSource的replaceMain方法巧妙用处

Posted hpugisers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cesium源码研究关于ShaderSource的replaceMain方法巧妙用处相关的知识,希望对你有一定的参考价值。

在做底层扩展开发的时候,有时候我们想从外部传入一段shader代码,那该如何将该段shader代码加入main函数中呢?最笨的方法就是利用正则表达去截取字符串,然后加上需要添加的shader代码,最后将所有的字符串拼装到一起。下面利用cesiun自带的功能去处理这个问题。

1、如何使用
第一步

shader = ShaderSource.replaceMain(shader, 'czm_light_main');

第二步(以main方式去构建自己需要添加的shader代码)

           //这里可以定义的变量
            void main() 
             
	           czm_light_main(); //注意和上面replaceMain函数中第二个参数保持一致
	           //这里添加你增加shader代码
           

原理:是将之前main函数用一个自定函数替代,然后申明新的main函数,在新的main函数中,执行自定义函数。

以上是关于cesium源码研究关于ShaderSource的replaceMain方法巧妙用处的主要内容,如果未能解决你的问题,请参考以下文章

cesium源码研究之VertexArray(VAO对象)生成的两种方式

cesium源码研究之VertexArray(VAO对象)生成的两种方式

cesium源码研究之uniformMap的自动更新机制

cesium源码研究之uniformMap的自动更新机制

Cesium专栏-空间分析之坡度分析(附源码下载)

Cesium专栏-地形开挖2-任意多边形开挖(附源码下载)