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

Posted hpugisers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cesium源码研究之uniformMap的自动更新机制相关的知识,希望对你有一定的参考价值。

在利用drawcommand绘制图形的时候,会通过uniformMap传递变量到着色器,如果用到异步加载图片生成纹理再传递给uniformMap,这个时候需要需要注意return的方式。应先判断需要传值的纹理是否为null或者undefined,然后根据判断结果是return 所传的纹理,还是context的默认纹理。即使此时Resource异步加载图片生成纹理没有完成,此时应传入context的默认纹理,等到Resource加载完毕,传入的context的默认纹理会被Resource加载图片生成的纹理所覆盖。
1、生成纹理示例

  //图像纹理读取与创建
    let texture = undefined;
    let imageUri = '../static/images/bonsai.raw.png';
    let vtxfTexture = undefined;
     Cesium.Resource.createIfNeeded(imageUri).fetchImage().then(function (image) 
        console.log('image loaded!');
        console.log(image);
        
        //debugger
        vtxfTexture = new Cesium.Texture(
            context: context,
            width: image.width,
            height: image.height,
            source: 
                arrayBufferView: image.bufferView
            ,
            hasMipmap: false,
            sampler: sampler,
            pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE
        );
        vtxfTexture.type = 'sampler2D';  
        //debugger
        that._cubeTextures = vtxfTexture   
    );

2、uniformMap传值示例

    let uniformMapFront = 
        tex: function () 
            return that._framebuffer._colorTextures[0]      
        ,
        cubeTex: function () 
            if (Cesium.defined(that._cubeTextures)) 
                return that._cubeTextures;
             else 
                return context.defaultTexture;
            
        
    

以上是关于cesium源码研究之uniformMap的自动更新机制的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

Cesium源码剖析---Post Processing之物体描边(Silhouette)

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