首页 / 浏览问题 / 桌面GIS / 问题详情
使用S3M的SDK包解析s3mb文件的纹理信息失败
1EXP 2023年02月21日
使用接口S3MB::ImageOperator::GetMipMapData()会崩溃 使用S3MB::ImageOperator::Decode()得到的纹理颜色内存块不对 S3MBReader S3MBReaderRo; wstring S3MBFileSrc = L"C:\\Users\\\liangqinlong\\Desktop\\s3mb\\data\\Tile_+023_+007\\Tile_+023_+007.s3mb"; S3MBReaderRo.SetFilePath(S3MBFileSrc); S3MBReaderRo.ReadS3MBAsROGroup(); RenderOperationGroup* Group = S3MBReaderRo.GetRenderOperationGroup(); int num = Group->GetNumChildren(); for (int i = 0; i < num; i++) { RenderOperationNode* pChild = Group; std::map& mats = pChild->GetMaterials(); for (auto it = mats.begin(); it != mats.end(); ++it) { S3MB::Material* curmat = (it)->second; for (auto ittech = curmat->mTechniques.begin(); ittech != curmat->mTechniques.end(); ++ittech) { S3MB::Technique* temp = (*ittech); for (auto itpass = temp->mPasses.begin(); itpass != temp->mPasses.end(); ++itpass) { S3MB::Pass* pPass = *itpass; for (auto ittexu = pPass->m_pTextureUnitStates.begin(); ittexu != pPass->m_pTextureUnitStates.end(); ++ittexu) { S3MB::TextureDataInfo* ptexdatainfo = pChild->GetTextureData((*ittexu)->m_strTextureName); if (ptexdatainfo) { S3MB::TextureData* texdata = ptexdatainfo->m_pTextureData; unsigned char* ppBufferOut = nullptr; std::vector vecs; int sss = S3MB::ImageOperator::GetMipMapData(texdata->m_nWidth, texdata->m_nHeight, texdata->m_pBuffer, &ppBufferOut, vecs); int size = S3MB::ImageOperator::Decode(texdata->m_nSize, texdata->m_nWidth, texdata->m_nHeight,&ppBufferOut, texdata->m_pBuffer, texdata->m_CompressType); } } } } } }

1个回答

您好,请问您使用的 S3M SDK 是 SuperMap 哪个产品的库呢?看您提供的代码像是 C++ 的开发语法,但是我从 SuperMap iObjects C++ 组件产品中没有找到 S3MB 的类。

希望可以帮到您。
2,138EXP 2023年02月21日

http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?tt=ProductAAS&id=137通过该链接下载的s3m的sdk包,应该是idesktop系列产品吧

您好,这个库是 github 上的开源项目,不涉及 SuperMap 平台产品,如果使用过程中遇到问题可在 https://github.com/SuperMap/s3m-spec/issues 项目中提 issue,该项目有专员回复。

6,有提问,但是没有人回复哇
您可以在 github 该项目中联系相关的负责人进行沟通。

希望可以帮到您
ok,我先试试能不能找到联系人
无法和 github 该项目中联系相关的负责人进行沟通。在该项目上查看负责人相关信息,他们应该是超图内部员工
您好,已经联系了该开源项目的负责人,后续开源项目的问题请在开源项目的issues中提问,项目负责人看见后会逐一进行回复。技术问答社区主要负责 SuperMap 平台产品的问题处理,还望理解,谢谢。
...