opengles加载xml格式的三维模型
来源:互联网 发布:集思宝数据导出 编辑:程序博客网 时间:2024/05/17 04:31
效果图:
模型文件格式
加载模型的代码:
std::vector<Face> _arFaces;std::vector<Vertex> _arVertex;virtual char* readFile(const char* fileName){FILE* pFile = fopen(fileName, "rb");if (pFile==0){return false;}//指针移动到文件尾fseek(pFile,0,SEEK_END);//获取文件长度size_t length = ftell(pFile);//移动到文件头fseek(pFile,0,SEEK_SET);//申请空间char* pText = new char[length + 1];fread(pText,1,length,pFile);pText[length] = 0;fclose(pFile);return pText;}virtual bool load(const char* fileName){char* pXML = readFile(fileName);if (pXML==0){return false;}try{rapidxml::xml_document<> doc;doc.parse<0>(pXML);//获取最外层跟节点 MeshRootrapidxml::xml_node<>* pRoot = doc.first_node();//获取第二层节点 meshrapidxml::xml_node<>* pMesh = pRoot->first_node();//获取面索引的根节点rapidxml::xml_node<>* pFaces = pMesh->first_node("faceIndex");//获取顶点跟节点rapidxml::xml_node<>* vertexs = pMesh->first_node("vertex");//遍历face节点for (rapidxml::xml_node<>* face = pFaces->first_node(); face != 0;face=face->next_sibling()){int x, y, z;const char* strFace = face->value();sscanf(strFace,"%d %d %d",&x,&y,&z);Face faceIndex = {x,y,z};_arFaces.push_back(faceIndex);}//遍历顶点节点for (rapidxml::xml_node<>* vert = vertexs->first_node(); vert != 0;vert=vert->next_sibling()){Vertex vVert;vVert.r = 1;vVert.g = 1;vVert.b = 1;vVert.a = 1;const char* strVert = vert->value();sscanf(strVert, "%f %f %f %f %f %f %f %f", &vVert.x, &vVert.y, &vVert.z, &vVert.u, &vVert.v, &vVert.nx, &vVert.ny, &vVert.nz);_arVertex.push_back(vVert);}}catch (...){}//释放资源delete[]pXML;return true;}
完整代码下载地址:http://download.csdn.net/detail/hb707934728/9854359
阅读全文
0 0
- opengles加载xml格式的三维模型
- 三维模型 DAE 导出格式结合 OpenGLES 要素浅析
- 纠结的三维模型格式
- opengles加载多个模型
- opengles加载obj格式3D模型含光照和纹理
- 加载一个三维模型
- ArcGIS 三维模型支持的格式与优化
- STK软件中三维模型的格式分析及制作
- 55 WebGL加载三维模型
- Cesium中简单的LOD动态加载大量三维模型
- wince下在OpenGLES中加载jpg、png格式的文件为纹理。
- opengles之3D模型加载(obj模型文件)
- 三维模型的数据格式
- worldwind 三维模型加载优化总结
- cesium js学习一加载三维模型
- World Wind Java开发 加载三维模型
- cesium初探之加载三维模型
- VTK的三维模型保存、读取之保存为vtk格式
- Jenkins执行shell重启tomcat
- ExpandableListView分类
- 使用Redis分区将数据分割到多个Redis实例
- Eclipse快捷键
- Android开源项目以及开源库集合(持续更新中)
- opengles加载xml格式的三维模型
- (130)固定光源
- 000043:在主方法中定义一维数组,并用foreach语句遍历该数组
- 数据存储BigDecimal形式
- nth-of-type和nth-child的区别
- QT工程打包发布
- Python-小习题-NO.2
- 快速了解友盟统计使用流程
- Segmentation fault (core dumped) --段错误