ogre小知识点

最近学习下ogre,使用感觉还算不错。本文记录下我学到的ogre小知识点。
1. ogre场景组织。ogre的各类资源都有其管理类,如Scene/Mesh/Material等。
2. ogre场景组织。ogre使用Node的子类SceneNode做为场景结点,来构建常用的场景树。SceneNode下可添加(attach) MovableObject对象,MovableObject有两个子类ManualObject和Entity。ManualObject由用户自己输入要显示内容的点/面/颜色等;Entity下的显示内容由Mesh对象(唯一对应)提供,Mesh可由代码生成,也可用代码生成。
3. Camera显示功能。目前Ogre为Camera提供了3种显示功能:点/线/实体,操作代码如下:

 case 0:   mMain->getCamera()->setPolygonMode(Ogre::PM_POINTS);   break;
 case 1:   mMain->getCamera()->setPolygonMode(Ogre::PM_WIREFRAME);   break;
 case 2:   mMain->getCamera()->setPolygonMode(Ogre::PM_SOLID);      break;`

4.环境光设置

mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) )

5.设置背景色
Ogre::RenderWindow::getViewport(int index)::setBackgroundColour (const ColourValue &colour)

6.Qt与Ogre结合
官网给出了ogre和qt5结合的例子,http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Integrating+Ogre+into+QT5
例子中使用QWindow而不是QWidget,因为(1)QWindow是qt5中新加的,它比QWidget抽象层级更高(3)在QtGui模块中,这有利于减少文件体积,尤其对于qt quick开发的,qt quick依赖于QML模块,不依赖QWidgets模块。

在我们使用的时候要用将这个QWindow的窗口加载到QWidget中使用,但问题出现了。一定要

QWindow* w = new QTOgreWindow;
w->resize(400, 300)        // 顺序一定不能变,否则Ogre窗口启动时会出现窗口大小178x0或0x0的错误
QWidget* w2 = QWidget::createWindowContainer(ogreWindow);///这个w2没有任何作用,它本身不做任何操作,甚至不检查参数,全部直接传给w

7.启动Ogre抗锯齿
Ogre的抗锯齿在Ogre.cfg中设置后无效需要在建立窗口的时候设置才有效。代码如下:

root.Initialise(false);
NameValuePairList misc = new NameValuePairList();
misc["externalWindowHandle"] = hWnd.ToString();
misc["FSAA"] = "4";  // 可选值0,2,4,8,切记是字符串
window = root.CreateRenderWindow("Simple Mogre Form Window", 0, 0, false, misc);

你可能感兴趣的:(小知识点,OGRE)