SuperMap / iClient3D-for-WebGL

Apache License 2.0
45 stars 10 forks source link

s3mb压缩纹理长度不够 #31

Open xiaoch11 opened 2 weeks ago

xiaoch11 commented 2 weeks ago
  1. 执行S3ModelParser.parseBuffer时,执行到parseTexturePackage这一步,得到的texutrePackage里纹理长度宽度分别为1024,格式为RBG_DXT1(33776),compressType为31,数据长度dataSize为158813
  2. 执行S3MContentParser.parse时,创建压缩纹理并上传,在DDSTexture.init中会调用Cesium.PixelFormat.compressedTextureSizeInBytes来计算纹理数据的字节长度,计算结果为524288,与瓦片数据中的数组长度158813差距巨大,导致下一行代码创建新的Uint8Array时长度不够,引发报错RangeError: Invalid typed array length: 524288
  3. 数据version为3 此数据使用超图的SuperMap3D jssdk是可以正常解析加载的,但使用cesium+S3MLayerPlugin会出现上述问题
Tian-shanchuan commented 1 week ago

能否提供您的数据给我们测试呢

supermap123 commented 1 week ago

compressType为31的KTX2类型纹理插件暂时不支持的,目前插件只支持DXT或CRN-DXT5类型纹理