Ogre1.8地形和天空盒的建立过程详解(一块地形)

编译环境 WIN7 32  VS2008   Ogre的版本 1.8

Ogre的地形算法是采用Geometry MIPMap的算法,当然贴图也是采用MIPMap的算法,这里有Ogre LOD算法的论文解释:http://www.flipcode.com/articles/article_geomipmaps.pdf

看到Ogre的Terrain,突然也想自己实现一个地形的打算,不过估计要过一段时间了,现在来说,ClipMap算法应该更适应现在的游戏,具体的内容可以查看http://www.docin.com/p-118698727.html,对于了解现在LOD的地形算法,这是一篇相当不错的论文

 

为了简化,就一个main.cpp文件,这个cpp文件中包含了监听器类和Application类以及main入口函数:

#include <Ogre.h>
#include <OIS/OIS.h>
#include <iostream>
#include <OgreTerrain.h>
#include <OgreTerrainLayerBlendMap.h>
#include <OgreTerrainGroup.h>

class MyFrameListener : public Ogre::FrameListener
{
private:
 OIS::InputManager *m_pInputManage;
 OIS::Keyboard *m_pKeyBoard;
 OIS::Mouse *m_pMouse;
 Ogre::Camera *m_pCamera;
 Ogre::Viewport *m_pViewport;
 Ogre::Timer m_Time;

 bool m_bWirmline;

 float m_fMovementSpeed;

public:
 MyFrameListener( Ogre::RenderWindow *pWin, Ogre::Camera *pCamera, Ogre::Viewport *pViewport )
 {
  m_pCamera = pCamera;
  m_fMovementSpeed = 10;

  m_Time.reset();

  m_pViewport = pViewport;
  m_bWirmline = true;

  OIS::ParamList Params;
  size_t WindowHandle = 0;
  std::ostringstream WinHandleString;
  pWin->getCustomAttribute( "WINDOW", &WindowHandle );
  WinHandleString<<WindowHandle;

  Params.insert( std::make_pair( "WINDOW", WinHandleString.str() ) );

  m_pInputManage = OIS::InputManager::createInputSystem( Params );

  m_pKeyBoard = static_cast<OIS::Keyboard*>( m_pInputManage->createInputObject( OIS::OISKeyboard, false ) );
  m_pMouse = static_cast<OIS::Mouse*>( m_pInputManage->createInputObject( OIS::OISMouse, false ) );

 }
 ~MyFrameListener()
 {
  m_pInputManage->destroyInputObject( m_pKeyBoard );
  m_pInputManage->destroyInputObject( m_pMouse );
  OIS::InputManager::destroyInputSystem( m_pInputManage );
 }


 bool frameStarted( const Ogre::FrameEvent& evt )
 {
  m_pKeyBoard->capture();
  bool bWalk = false;
  if( m_pKeyBoard->isKeyDown( OIS::KC_ESCAPE ) )
  {
   return false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值