您的位置:首页 > 其它

OGRE屏幕坐标转世界坐标

2007-06-04 10:18 423 查看
http://download1.csdn.net/down3/20070604/04105853850.zip

其实这些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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: