|
地图类操作,进行增加覆盖物操作。
1、添加第一个点时,没有问题。
2、添加第二个点时,如果在第一个点同一屏幕内则可以显示。
如果不和第一个点在同一屏幕,则不显示,移动到第一个点出,再移动回来就显示出来了。
3、 startIcon->setAutoScaleToScreen(false); 则可以显示。但是很大并且随地图缩放
4、大体代码如下:
- osg::Group* pMarkGroup = getOrCreateOverLayerGroup();
-
- char strImageName[256] = {0};
- #ifdef __APPLE__
- sprintf(strImageName, "%s/../../aa/%s", m_strDataPath.c_str(),m_startIconName.c_str());
- #else
- sprintf(strImageName, "%s/../../../bb/%s", m_strDataPath.c_str(),m_startIconName.c_str());
- #endif
- osg::ref_ptr<osg::Image> pImage = osgDB::readImageFile(strImageName);
- osg::Geode* startGeode = m_pSceneData->createTexturedQuadGeode(m_fStartIconSize, m_fStartIconSize, pImage.get());
- osg::ref_ptr<osg::AutoTransform> startIcon = new osg::AutoTransform();
- startIcon->setName("StartIcon");
- startIcon->setAutoRotateMode(osg::AutoTransform::ROTATE_TO_CAMERA);
- startIcon->setAutoScaleToScreen(false);
- startIcon->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);
- startIcon->setUserValue("startDir", 1);
-
- startIcon->setNodeMask(0xFF);
- startIcon->setPosition(osg::Vec3(markInfo.xPos, markInfo.yPos, markInfo.zPos));
- startIcon->addChild(startGeode);
- startIcon->getOrCreateStateSet()->setRenderBinDetails(41, "RenderBin");
- pMarkGroup->addChild(startIcon.get());
复制代码
请教高人,大体的原因,有个方向也行 |
|