ogre世界坐标与屏幕坐标相互转换
virtual void mousePressed(MouseEvent* e) { // Left mouse button down if (e->getButtonID() & MouseEvent::khyJh"@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-&gkhyJh"@t;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 ); mCurrekhyJh"@ntObject->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