osg::Camera* createCameraHud()
{osg::ref_ptr<osg::Camera>camera = new osg::Camera;camera->setViewMatrix(osg::Matrix::identity());//相机设置为单位矩阵camera->setRenderOrder(osg::Camera::POST_RENDER);camera->setClearMask(GL_DEPTH_BUFFER_BIT);//清除深度缓存camera->setAllowEventFocus(false);//不接受焦点camera->setViewport(600,600, 600, 600);camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);//设置为绝对帧,防止拣选camera->setProjectionMatrixAsOrtho2D(0,600,0,600);//正视投影的大小//添加文字osg::ref_ptr<osg::Geode>geo = new osg::Geode;geo->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);osg::ref_ptr<osgText::Text> text = new osgText::Text;geo->addDrawable(text);text->setFont("f");text->setCharacterSize(50);//字体大小text->setText(L"测试");text->setPosition(osg::Vec3d(0,0,0));camera->addChild(geo);//添加纹理osg::Geometry*gm = new osg::Geometry;//设置顶点坐标osg::Vec3Array*vertex = new osg::Vec3Array;vertex->push_back(osg::Vec3d(0, 0, -1.0));vertex->push_back(osg::Vec3d(100, 0, -1.0));vertex->push_back(osg::Vec3d(100,100, -1.0));vertex->push_back(osg::Vec3d(0, 100, -1.0));gm->setVertexArray(vertex);//设置法线osg::Vec3dArray*norm = new osg::Vec3dArray;norm->push_back(osg::Vec3(0.0,0.0,1.0));gm->setNormalArray(norm);gm->setNormalBinding(osg::Geometry::BIND_OVERALL);//设置纹理坐标osg::Vec2dArray*coord = new osg::Vec2dArray;coord->push_back(osg::Vec2d(0.0,0.0));coord->push_back(osg::Vec2d(1.0, 0.0));coord->push_back(osg::Vec2d(1.0, 1.0));coord->push_back(osg::Vec2d(0.0, 1.0));gm->setTexCoordArray(0, coord);gm->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));//贴纹理osg::Image*image = osgDB::readImageFile("Cubemap_axis/posz.png");osg::Texture2D *tex = new osg::Texture2D;tex->setImage(image);gm->getOrCreateStateSet()->setTextureAttributeAndModes(0, tex,osg::StateAttribute::ON);geo->addDrawable(gm);lease();
}
注意最好使用正视投影防止变形,camera->setProjectionMatrixAsOrtho2D(0,600,0,600);正视投影的值为屏幕坐标和投影宽高,此宽高与窗口宽高相同即可,设置绝对帧来防止拣选camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
本文发布于:2024-01-30 12:44:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170658985120081.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |