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

来源:互联网 发布:公路预算软件 编辑:程序博客网 时间:2024/05/22 14:14

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

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

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

 

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

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

3、基本实现代码如下:

//获得文字的 Material,这里是fontMaterialOgre::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::wstringOgre::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();


 

 

 

 

 

原创粉丝点击