MyGUI在Ogre的RTT和直接调用纹理显示

改用MyGUI之后,

用着是不错,可是发现一个问题,资料太少了,

没办法,只能啃代码了,

这里讲MyGUI的两个使用:

1,RTT渲染到纹理:

这个很简单,首先在Layout里确定下要显示的Canvas,

在程序中得到它

MyGUI::Canvas* canvas2;
assignWidget(canvas2,"SceneAddView");

再将其赋于一个RenderBoxScene

wraps::RenderBoxScene mRenderBoxScene;
mRenderBoxScene.setCanvas(canvas2);

再插入Mesh,Ok

(不过Debug下有问题,见上篇,希望有砖家出现答疑)
mRenderBoxScene.injectObject("Robot.mesh");
mRenderBoxScene.setAutoRotation(true);
mRenderBoxScene.setMouseRotation(true);

2,直接使用Ogre中的纹理

如需在一个ImageBox中显示一张Ogre即时生成的纹理,

首先也是得之

MyGUI::ImageBox*  mAtlasView;

MyGUI::OgreTexture* mTexture;

assignWidget(mAtlasView, "AtlasView");

再在Ogre的Tex管家那里要得指定的纹理,

Ogre::TexturePtr layer0 = Ogre::TextureManager::getSingletonPtr()->getByName( "<TileImagesetTexture>");

这里将其做了中转,赋给了一张MyGUI的OgreTexture,不清楚其他用法,暂时只能这么hack了

mTexture =(MyGUI::OgreTexture* )MyGUI::RenderManager::getInstance().createTexture("AtlasView");

mTexture->setOgreTexture(layer0);

设置具体纹理的大小

MyGUI::IntCoord coord(0,0,1024,128);

及每张小图的大小(如果要显示整张图,那就直接coord.size())
MyGUI::types::TSize<int>        tileSize(64,64);

这里MyGUI不知为何,通过setImageInfo的初始化方法并不会初始化Index,

如果不加下面一行,则图像不能显示
mAtlasView->setItemSelect(0);
mAtlasView->setImageInfo("AtlasView",coord,tileSize);

3,PS:

MyGUI是原生支持OIS的,在CMake里有选项,设置一下即可,上一篇中的做法太蛋疼了。

附上一张MyGUI的架构图

(浏览器不好看,直接另存为吧)

inherit__graph__108

转载于:https://www.cnblogs.com/Zephyroal/archive/2011/05/21/2052670.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值