Posted on 2011-07-24 16:24
buf 阅读(1467)
评论(0) 编辑 收藏 引用 所属分类:
Graphics
以官方教程的框架程序为例:
void TutorialApplication::createScene(void)
{
// light...
// cam...
// axis...
Ogre::SceneNode *axis = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Ogre::ManualObject *axisObj = mSceneMgr->createManualObject();
axisObj->begin("BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_LIST);
axisObj->position(0, 0, 0);
axisObj->colour(1, 0, 0);
axisObj->position(1000, 0, 0); // X axis, red
axisObj->position(0, 0, 0);
axisObj->colour(0, 1, 0);
axisObj->position(0, 1000, 0); // Y axis, green
axisObj->position(0, 0, 0);
axisObj->colour(0, 0, 1);
axisObj->position(0, 0, 1000); // Z axis, blue
axisObj->end();
axis->attachObject(axisObj);
// other stuff...
} 上面的代码中,"
BaseWhiteNoLighting"是OGRE内置的三个Material之一。
另外,看了下ManualObject的源码,position方法只是把设定的位置保存到一个临时定点mTempVertex,只有当position方法被再次调用或end方法被调用时,前一次定义的定点才会被写入ManualObject对象,colour方法更改的也是临时顶点的属性。