TextureUniform
是 Cesium中用于描述纹理的类。它提供了一些方法和属性来控制纹理的属性。
创建一个 TextureUniform
对象:
var textureUniform = new Cesium.TextureUniform({
image: 'texture.png',
flipY: true
});
创建了一个默认纹理坐标 [0.0, 0.0, 1.0, 1.0] 的纹理,图片地址为 texture.png
,纹理文件会根据设备的支持情况自动在cpu和gpu之间选择上传方式。
设置纹理对材质的影响:
var material = new Cesium.Material({
fabric: {
type: 'Color',
uniforms: {
image: textureUniform,
color: new Cesium.Color(1.0, 1.0, 1.0, 0.5)
}
}
});
这里的 image
用于控制 TextureUniform
对材质的影响。
image
String or HTMLImageElement or HTMLCanvasElement: 纹理图片路径,亦可传入已加载的图片对象或canvas对象
pixelFormat
PixelFormat: 解析纹理的颜色格式,默认使用 PixelFormat.RGBA_UNSIGNED_BYTE
;
pixelDatatype
PixelDatatype: 解析纹理的数据类型,默认使用 PixelDatatype.UNSIGNED_BYTE
flipY
Boolean: 是否翻转纹理的Y坐标,默认为false。
wrapS
TextureWrap: s轴的纹理循环方式,默认为 TextureWrap.REPEAT
。
wrapT
TextureWrap: t轴的纹理循环方式,默认为 TextureWrap.REPEAT
。
magnificationFilter
TextureMagnificationFilter: 放大过滤器。默认为 TextureMagnificationFilter.LINEAR
。
minificationFilter
TextureMinificationFilter: 缩小过滤器。默认为 TextureMinificationFilter.LINEAR
。
maximumAnisotropy
Number: 最大各向异性,默认为1。
textureCoordinates
: 纹理坐标数组,格式为 [s0, t0, s1, t1]
,默认值是 [0.0, 0.0, 1.0, 1.0]
。
isTranslucent()
返回纹理是否半透明。
equals(other)
比较两个 TextureUniform
是否相等。
sampler2D texture
使用集成后的 texture 对象,使纹理效果work使用 Texture
。
两个 vec2
类型的uniform属性。分别是 rotateTextureCoordinates
和 translateTextureCoordinates
。可用以调节纹理的位置和角度。使用方法如下:
uniforms: {
texture: textureUniform,
rotateTextureCoordinates: new Cesium.Cartesian2(0, 1),
translateTextureCoordinates: new Cesium.Cartesian2(0.25, 0.0)
}
这个表示对纹理进行左上角旋转45度并使纹理向右平移1/4的纹理坐标调整。
注意:rotateTextureCoordinates
的值为 (0,0)
时纹理坐标不发生变化,translateTextureCoordinates
的值为 (0,0)
时纹理坐标不发生平移。