|
本帖最后由 anlingbin 于 2015-3-26 12:35 编辑
最近用osgRecipes中的osgdb_otl保存并读取模型,发现模型成功保存到了数据库(SQLite3),但是读取的时候一直不成功(卡在那里),调试了一下发现是在
ReaderWriterOTL.cpp中readImplementation的ReadResult rr = op.read( rw, in, realOptions )行卡住,然后std::stringstream in中好像读取的数据并不全,没有全部获取到,请问这种情况是什么原因?是否是转义字符的原因,还是其它?本人对数据库不是很熟悉,希望哪位帮忙解释一下,谢谢!
以下是代码:
int _tmain(int argc, char* argv[])
{
std::string file = "E:/alb/model/RevitExport/356x368x129UC_123069.osg";
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile(file);
if (!node.valid())
return 0;
osg::ref_ptr<osgDB::Options> options = new osgDB::Options;
options->setOptionString("newtable ");
osgDB::writeNodeFile(*node, "usr/pwd@SQLite3ALB:mytable:cvx.osg.otl", options.get());
node = osgDB::readNodeFile("usr/pwd@SQLite3ALB:mytable:cvx.osg.otl", osgDB::Registry::instance()->getOptions());
if (!node.valid())
{
std::cout << "read_node null" <<std::endl;
return 0;
}
osg:ightModel* lightModel = new osg::LightModel;
lightModel->setTwoSided(true);//双面灯光
node->getOrCreateStateSet()->setAttribute(lightModel);
osgViewer::Viewer viewer;
viewer.setSceneData(node.get());
viewer.setUpViewInWindow(100, 100, 800, 600);
return viewer.run();
} |
|