|
发表于 2012-1-11 00:01:13
|
显示全部楼层
本帖最后由 xzll77 于 2012-1-12 13:06 编辑
liuzhiyu123 发表于 2011-9-7 19:26
回复 29# liuzhiyu123
想问楼主,我想在一个osg模型前面显示界面,将楼主的代码简化了一下,但是出来的效果有如下问题:
1、鼠标可以点击界面,但是不能拖动模型转动,是什么原因?
2、Editbox无法输入,按键盘没反应,用的是下面这段语句:
Editbox* editbox = static_cast<Editbox*>(m_NetworkWindow->getChild("Root/ConnectDialog/IpInpute"));
String edit_text(editbox->getText());
editbox->activate();
3、中文显示是怎么实现的?我看好像不是用代码进行字体转换的。
4、我想先在一个背景图片上显示界面,当点击界面的某个按钮时,就显示osg场景模型,并在场景前显示另一个界面,这个要怎么实现?我不知道要如何在一个背景图片上显示界面,然后调用osg模型的显示。
我的主函数是:- int main( int argc, char **argv )
- {
- osgViewer::Viewer viewer;
- viewer.setThreadingModel(osgViewer::Viewer::SingleThreaded);
- viewer.realize();
- viewer.getCamera()->getGraphicsContext()->makeCurrent();
- osg::ref_ptr<osg::Group> SceneRoot = new osg::Group;
- osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("xxx.osg");
- SceneRoot->addChild(loadedModel.get());
- osg::ref_ptr<osg::Geode> geode = new osg::Geode;
- osg::ref_ptr<CEGUIDrawable> cd = new CEGUIDrawable();
- geode->addDrawable(cd.get());
- cd->Init();
- SceneRoot->addChild(geode.get());
- osgUtil::Optimizer optimiz;
- optimiz.optimize(SceneRoot.get());
- viewer.setSceneData(SceneRoot.get());
- return viewer.run();
- }
复制代码 |
|