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
这里关键是要监听类要继承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
相关文章推荐
- ogre世界坐标与屏幕坐标相互转换
- OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标
- OGRE的2D坐标、CEGUI坐标、鼠标坐标、 世界坐标转屏幕坐标
- ogre 世界坐标、本地坐标、屏幕坐标之间的转换
- OGRE屏幕坐标转世界坐标
- ogre世界坐标鱼屏幕坐标相互转换
- 在Unity的后处理shader中通过屏幕像素坐标和深度贴图反推世界坐标
- 一、WebGL屏幕坐标转世界坐标
- 游戏世界坐标转化为UGUI屏幕坐标
- OGRE中OIS与CEGUI的屏幕坐标转换
- OGRE中OIS与CEGUI的屏幕坐标转换
- UGUI世界坐标转屏幕坐标
- 三维世界坐标转化为二维屏幕坐标
- 屏幕坐标到OpenGL世界坐标的转换
- 屏幕坐标向世界坐标转换
- ugui屏幕坐标和世界坐标关系详解
- 屏幕坐标到opengl世界坐标转换
- 屏幕坐标和世界坐标的转换+对象池技术(3D打地鼠小游戏)
- U3D屏幕坐标,世界坐标,像素坐标之间的关系
- 屏幕坐标到世界坐标