ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HUD

2021-09-02 21:32:30  阅读:230  来源: 互联网

标签:HUD text camera include ref ptr osg


  1. 显示文本;
  2. 显示纹理;
#include <Windows.h>
#include <osg/Node>
#include <osg/Group>
#include <osg/Geode>
#include <osg/Camera>
#include <osg/Texture2D>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgText/Text>

osg::Camera* createHUDCamera(double left, double right, double bottom, double top)
{
	osg::ref_ptr<osg::Camera> camera = new osg::Camera();

	camera->setProjectionMatrix(osg::Matrix::ortho2D(left, right, bottom, top));
	
	camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
	camera->setViewMatrix(osg::Matrix::identity());

	camera->setClearMask(GL_DEPTH_BUFFER_BIT);
	camera->setRenderOrder(osg::Camera::POST_RENDER);
	
	camera->setAllowEventFocus(false);

	camera->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);

	return camera.release();
}

osgText::Text* createText(const std::string& str)
{
	osg::ref_ptr<osgText::Text> text = new osgText::Text();
	text->getOrCreateStateSet()->setRenderBinDetails(0, "DepthSortedBin");
	text->setPosition(osg::Vec3(10.0, 10.0, 0.0));
	text->setCharacterSize(32);
	text->setText(str);
	return text.release();
}

osg::Geode* createTexture(const std::string& path)
{
	osg::ref_ptr<osg::Geode> geode = new osg::Geode();
	geode->getOrCreateStateSet()->setRenderBinDetails(1, "DepthSortedBin");
	osg::ref_ptr<osg::Geometry> geometry = osg::createTexturedQuadGeometry(osg::Vec3(), osg::Vec3(200.0f, 0.0f, 0.0f), osg::Vec3(0.0f, 200.0f, 0.0f));
	osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D();
	texture->setImage(osgDB::readImageFile(path));
	geometry->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture);
	geode->addDrawable(geometry);
	return geode.release();
}

int main()
{
	osgViewer::Viewer viewer;

	osg::ref_ptr<osg::Group> group = new osg::Group();
	group->addChild(osgDB::readNodeFile("glider.osg"));

	osg::ref_ptr<osg::Camera> camera = createHUDCamera(0, 800, 0, 600);
	camera->addChild(createText("glider"));
	camera->addChild(createTexture("Images/blueFlowers.png"));
	group->addChild(camera);

	viewer.setSceneData(group);
	viewer.setUpViewInWindow(100, 100, 500, 400);
	return viewer.run();
}

标签:HUD,text,camera,include,ref,ptr,osg
来源: https://www.cnblogs.com/shiguoliang/p/15220865.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有