TA的每日心情 | 开心 2020-1-14 14:24 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
问题描述:
有一个Geode,设置StateSet中纹理相关的部分参数,其中纹理图片的路径为网络地址;
osgText::Text,设置font为 osgText::readFontFile("http://XXX.XXX.XXX.XXX/simhei.ttf") 字体文件的路径为网络地址;
使用writeNodeFile输出.osg文件后,上述两个地址都未能正确写入文件。
都改为本地地址,如:F:/OpenSceneGraph/XXX/XXX.png 和 F:/OpenSceneGraph/XXX/simhei.ttf 等路径后能够正确写入文件。
示例代码(下述代码只为了研究测试网络文件地址写入.osg文件的正确性问题,不具有功能性的使用价值):
osg::ref_ptr<osgText::Font> osgtextfontOne = new osgText::Font();
osgtextfontOne= osgText::readFontFile("http://192.168.1.202/simhei.ttf ");//局域网网络地址
osg::ref_ptr<osg::Geode> textLabelGeode = new osg::Geode();
textOne->setFont(osgtextfontOne);
//........省略其它设置text的代码
std::string filename("F:/OpenSceneGraph/111.png");
textLabelGeode->getOrCreateStateSet()->setTextureAttributeAndModes(0,new osg::Texture2D(osgDB::readImageFile(filename)));
//......省略
root->addChild(textLabelGeode);
osgDB::writeNodeFile(*(root.get()),"F:/XXX/XXX.osg");
打开.osg文件查看,上述文件地址不能正确写入。例如:纹理路径可能不存在 filename 为空;字体font字段值为空或osg自动搜索到的系统
带有的本地字体文件路径,如:c:/windows/fonts/XXX.ttf等。
注:网络地址对应的文件均存在而且能正确读取进来。
谢谢。
|
|