Ogre中文字类的纹理贴到三维物体中

就是我需要在三维中,用ManualObject中将文字的纹理图片贴图到三维实体中。

做完发现不难,但是找的时候犯傻了,所以查了很多资料,⊙﹏⊙b汗。

这个中文的网页里,还真没有人怎么实现的。可能先太容易了?

 

1、字体文件是TTF,文件大小足够大,所以包含中文了。

2、文字需要载入,这个有时间写个blog吧。如果不载人,光添加时没有文字图像的。

3、基本实现代码如下:

	//获得文字的 Material,这里是fontMaterial
	Ogre::Font* font = (Ogre::Font*)Ogre::FontManager::getSingleton().getByName("ChineseFont","General").get();
	Ogre::MaterialPtr fontMaterial = font->getMaterial();
	//不用拷贝也可以,我当时肯定什么做错了。
	//Ogre::MaterialPtr matClone = fontMaterial->clone("newFontMaterial"); 
	Ogre::String matName = fontMaterial->getName(); 

	std::wstring text = L"天天都快乐!";//中文必须用std::wstring
	Ogre::Font::CodePoint codePoint = *(text.c_str());//第一个文字转换成Ogre::Font::CodePoint码
	Ogre::Font::UVRect uvRect = font->getGlyphTexCoords(codePoint);//重点是这个,获得该文字的图片UV
	//Ogre::Font::GlyphInfo glyphInfo = font->getGlyphInfo(codePoint);
	//这个Ogre::Font::GlyphInfo 里面包含Ogre::Font::UVRect,所以也可以使用。

	Ogre::ManualObject* manualObject = sceneManager->createManualObject();
	sceneManager->getRootSceneNode()->createChildSceneNode()->attachObject(manualObject);
	manualObject->begin(matName,Ogre::RenderOperation::OT_TRIANGLE_LIST);
	//将 uvRect中的UV添加到对应的点位置就可以了
	//感觉有点奇怪?有时间,再弄好点吧。先记录一下。
	manualObject->position(0,5,0);
	manualObject->textureCoord(uvRect.left,uvRect.top);
	manualObject->position(5,5,0);
	manualObject->textureCoord(uvRect.right,uvRect.top);
	manualObject->position(5,0,0);
	manualObject->textureCoord(uvRect.right,uvRect.bottom);
	manualObject->position(0,0,0);
	manualObject->textureCoord(uvRect.left,uvRect.bottom);
	manualObject->triangle(0,1,2);
	manualObject->triangle(0,2,1);
	manualObject->triangle(0,2,3);
	manualObject->triangle(0,3,2);
	manualObject->end();


 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值