|
想要实现 把两个屏连在一起当做一个屏使用,只显示一个HUD文字,在显示HUD文字时,却两个屏上都显示文字了。请大神帮忙解答一下
创建HUD的代码如下:
osg::Camera *createHUD()
{
osg::ref_ptr<osg::Camera>camera=new osg::Camera;
camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
camera->setViewMatrix(osg::Matrix::identity());
camera->setAllowEventFocus(false);
//设置视口,就是相机投影到你显示器的哪个位置
//camera->setViewport(0, 0, 2000, 600);
//投影变换就是定义一个可视空间,可视空间以外的物体不会被绘制到屏幕上
//setProjectionMatrixAsOrtho2主要用于二维图像到二维屏幕上的投影,它负责把三维空间的XY平面投射到屏幕上
camera->setProjectionMatrixAsOrtho2D(0, 1280, 0, 1024); // 1280 1024
camera->setClearMask(GL_DEPTH_BUFFER_BIT);
camera->setRenderOrder(osg::Camera:OST_RENDER);
osg::Geode *geode = new osg::Geode();
string timesFont("fonts/SIMHEI.TTF");
osg::StateSet *stateset = geode->getOrCreateStateSet();
stateset->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
osgText::Text *text = new osgText::Text;
geode->addDrawable(text);
text->setFont(timesFont);
text->setPosition(osg::Vec3(50.0f, 500.0f, 0.0f)); //显示的位置
text->setText(L"天道酬勤\n付出一定会有回报的\n");
camera->addChild(geode);
return camera.release();
} |
|