您的位置:首页 > 其它

OGRE屏幕坐标转世界坐标

2012-06-13 08:11 309 查看
其实这些OGRE已经帮我们做好了。。不多说 看代码

这里关键是要监听类要继承MouseListener

然后在mousePressed(MouseEvent* e)进行处理,关键是这个函数

virtual void mousePressed(MouseEvent* e)

{

// Left mouse button down

if (e->getButtonID() & MouseEvent::BUTTON0_MASK)

{

// Setup the ray scene query

Ray mouseRay = mCamera->getCameraToViewportRay( e->getX(), e->getY() );

mRaySceneQuery->setRay( mouseRay );

// Execute query

RaySceneQueryResult &result = mRaySceneQuery->execute();

RaySceneQueryResult::iterator itr = result.begin( );

// Get results, create a node/entity on the position

if ( itr != result.end() && itr->worldFragment )

{

char name[16];

sprintf( name, "Robot%d", mCount++ );

Entity *ent = mSceneMgr->createEntity( name, "robot.mesh" );

mCurrentObject = mSceneMgr->getRootSceneNode( )->createChildSceneNode( String(name) + "Node", itr->worldFragment->singleIntersection );

mCurrentObject->attachObject( ent );

mCurrentObject->setScale( 0.1f, 0.1f, 0.1f );

} // if

mLMouseDown = true;

} // if

// Right mouse button down

else if (e->getButtonID() & MouseEvent::BUTTON1_MASK)

{

mRMouseDown = true;

CEGUI::MouseCursor::getSingleton().hide( );

} // else if

} // mousePressed

转自/article/10527825.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: