ogre+MFC+MDI错误集

系统结构是MFC+MDI+OGRE;

今天看到http://www.crystax.net,貌似可以在Android中编译C++,以后应该用的到。

1.照着网上的列子,新建一个视图时,没有渲染,不知怎么回事,默认代码是使用RenderSystem_GL_d,后来换了RenderSystem_Direct3D9_d,就渲染拉。

2.测试代码的时候,怎么弄都没有天空盒,后来网上查资料,需要ResourceGroupManager::getSingleton().initialiseAllResourceGroups();加了之后运行到这句就报错(出错),百思不得其解,用系统的media下面的文件,再加resources_d.cfg,首先先确认resources_d.cfg和media的目录有没有搞错,然后在resources_d.cfg文件里[Popular]下面的一个个删掉,一个个的添加,测试着跑,发现FileSystem=../../media/materials/scripts这句话加入出错,再找media\materials\scripts下面Examples.compositor,Examples.program这2个删掉就可以了,也没弄明白怎么回事,天空盒出来拉,先跑着,后面再来明白是怎么回事。还有如果使用setSkyBox(true, "Examples/SpaceSkyBox",5000);天空盒就没有显示,如果换了setSkyBox(true, "Examples/SpaceSkyBox",500)就显示了,不知是不是和createPlane或者createRenderWindow时的大小参数有关系

 

20130610更新

经过以前的测试,直接把系统自带SampleContext.h等文件结合进自己的 MFC MDI 工程中,再把Terrain列子也结合进来,本来想使用   Ogre::FrameListener,
  Ogre::WindowEventListener,  OIS::KeyListener, OIS::MouseListener,想把每个View都继承OIS::KeyListener, OIS::MouseListener,结果DirectInput只能由主HWND使用,view的HWND不能使用,ois的Win32KeyBoard,Win32Mouse不能使用,现在临时的解决办法是参考Win32KeyBoard.cpp和Win32Mouse.cpp中的代码,把坐标转换为OIS::MouseState state;

		OIS::MouseState state;
		state.X.abs = point.x;
		state.Y.abs = point.y;
		state.Z.abs +=  state.Z.rel;
		CPoint delta = point - s_lastPoint;
		state.X.rel = delta.x;
		state.Y.rel = delta.y;


point是OnMouseMove时获得的,s_lastPoint是OnLButtonDown获得的。

当使用RenderSystem_Direct3D9_d模式时,调用Terrain时,mTerrainGroup->loadAllTerrains(true);这句话会报错,不知道是电脑硬件配置问题,还是什么问题。

由于想显示地形,没办法,跟进去OgreTerrainMaterialGeneratorA.cpp文件中HighLevelGpuProgramPtr vprog = mShaderGen->generateVertexProgram(this, terrain, tt);报错;再进去ret->load();这句错误,不明白原因,待以后明白。后来ORGE系统的自带的Terrain列子转换成RenderSystem_GL_d,可以正常显示, 看到网上的列子http://blog.youkuaiyun.com/znf19850924/article/details/2099275,改写后Terrain可以正常显示。Happy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值