本文主要是介绍Ogre射线场景查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
昨晚在看中级教程二的时候,发现VS2005竟然总是无法在我输入.后显示成员列表,并且我自己补全后,还提示我并没有该成员函数。我左看看代码,右看看代码,觉得总是没错。幸好Ogre还是开源的,我顺着类一个个往上翻,更加无比的确认了自己的是对的,冒着“万般”的危险按下了F5,结果程序通过了……
事后一想,这个是用到了C++里的反射机制。这个我不是太了解,曾经在老师带的一个项目里接触过,但那是老师负责,自己也放过了自己,所以到现在也还是不懂。大意应该就是直到运行的时候才确定那个容器里的对象是什么类的实例化对象吧。所以那会vs2005没法提示,也自己补全了也会发出警告。我想,05里面可能没能很好的支持反射。所以,等这次自学完后,要换系统了。
不过,通过这个东西,了解到了Ogre里的射线,场景查询等,确实不错。做笔记如下吧。
1.创建射线场景查询对象,记得最后销毁
mRaySceneQuery = mSceneMgr->createRayQuery(Ray());
销毁的代码是 mSceneMgr->destroyQuery(mRaySceneQuery);
2.设置要查询的射线,下面代码是以摄像机竖直向下的射线对场景进行查询
Vector3 camPos = mCamera->getPosition();
Ray cameraRay(Vector3(camPos.x, 5000.0f, camPos.z), Vector3::NEGATIVE_UNIT_Y);
mRaySceneQuery->setRay(cameraRay);
3.执行场景查询
RaySceneQueryResult &result = mRaySceneQuer
这篇关于Ogre射线场景查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!