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方法巧妙用处