OGRE 1.9 的第一个程序(OGRE HelloWorld程序)
平台:win7, VS2010
先看运行结果吧:
1. 安装OGRE
下载OGRE SDK 1.9,解压,放在你喜欢的地方,在OGRE SDK文件加下创建“OGRE_HOME.bat.bat”文本文件,添加如下脚本:
setx OGRE_HOME %CD%
双击运行“OGRE_HOME.bat.bat”,该操作定义环境变量OGRE_HOME值为OGRE SDK目录,该环境变量将在VC++工程中使用。
2. 下载BaseApplication
到这个地方下载Tutorial Framework 1.9 - (Windows Line-endings):
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Ogre+Wiki+Tutorial+Framework
这是OGRE为入门者准备的基本示例程序,给我们写好了初始化OGRE的代码(BaseApplication.cpp, BaseApplication.h)。
3. 创建VC++工程
step 1:控制台项目(空项目),将上一节下载的BaseApplication.cpp, BaseApplication.h拷贝到项目文件夹里,并添加到项目中。添加新源文件main.cpp,main.cpp中加入如下代码:
1 #include "BaseApplication.h" 2 3 class MyClass : public BaseApplication 4 { 5 public: 6 MyClass(void) { } 7 virtual ~MyClass(void) { } 8 protected: 9 virtual void createScene(void); 10 }; 11 12 void MyClass::createScene(void) 13 { 14 // shadow 15 mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE); 16 mSceneMgr->setAmbientLight(Ogre::ColourValue(0.2f, 0.2f, 0.2f)); 17 18 // light and light sphere 19 Ogre::Light* pointLight1 = mSceneMgr->createLight("pointLight1"); 20 pointLight1->setType(Ogre::Light::LT_POINT); 21 pointLight1->setDiffuseColour(Ogre::ColourValue::White); 22 pointLight1->setSpecularColour(Ogre::ColourValue::White); 23 24 Ogre::Entity* sphereEnt = mSceneMgr->createEntity("MyEntity", "sphere.mesh"); 25 Ogre::SceneNode* lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("LightNode"); 26 lightNode->attachObject(sphereEnt); 27 lightNode->setScale(0.1f,0.1f,0.1f); 28 sphereEnt->setMaterialName("BaseWhiteNoLighting"); 29 30 Ogre::Vector3 lightPosition(0,500,150); 31 lightNode->setPosition(lightPosition); 32 pointLight1->setPosition(lightPosition); 33 34 // Ninja 35 Ogre::Entity* entNinja = mSceneMgr->createEntity("Ninja", "ninja.mesh"); 36 entNinja->setCastShadows(true); 37 mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entNinja); 38 39 // ground 40 Ogre::Plane plane(Ogre::Vector3::UNIT_Y, 0); 41 Ogre::MeshManager::getSingleton().createPlane("ground", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, 42 plane, 1500, 1500, 20, 20, true, 1, 5, 5, Ogre::Vector3::UNIT_Z); 43 Ogre::Entity* entGround = mSceneMgr->createEntity("GroundEntity", "ground"); 44 mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entGround); 45 entGround->setMaterialName("Examples/Rockwall"); 46 entGround->setCastShadows(false); 47 48 // set camera position 49 mCamera->setPosition(100,200,-300); 50 mCamera->lookAt(0,100,0); 51 } 52 53 int main(int argc, char *argv[]) 54 { 55 // Create application object 56 MyClass app; 57 58 try{ 59 app.go(); 60 } 61 catch( Ogre::Exception& e ){ 62 std::cerr << "An exception has occured: " << 63 e.getFullDescription().c_str() << std::endl; 64 } 65 return 0; 66 }
添加好之后,工程是这个样子的:
step 2:添加包含目录和库目录
项目上右键属性“配置属性 >> VC++目录 >> 包含目录”所有配置下添加如下项:
$(OGRE_HOME)\include
$(OGRE_HOME)\include\OIS
$(OGRE_HOME)\include\OGRE
$(OGRE_HOME)\include\OGRE\Overlay
$(OGRE_HOME)\boost
“配置属性 >> VC++目录 >> 库目录”所有配置下添加如下项::
$(OGRE_HOME)\lib\$(Configuration)
$(OGRE_HOME)\boost\lib
现在知道环境变量OGRE_HOME的用途了吧。
step 3:添加库文件
项目上右键属性“配置属性 >> 链接器 >> 输入 >> 附加依赖项”Debug配置下添加如下项:
OgreMain_d.lib
OIS_d.lib
OgreOverlay_d.lib
Release配置下添加如下项:
OgreMain.lib
OIS.lib
OgreOverlay.lib
这个时候编译项目已经可以成功编译了,但运行不了,因为没有运行环境(.dll文件,资源文件)。在Release下编译,将编译出的helloOGRE.exe文件拷贝到OGRE_HOME/bin/Release下,双击运行,报错如下:
此时这是因为没有安装D3D,你可以到MSDN下载D3D安装,我们这里用OpenGL(OGRE同支持OpenGL和Direct3D):将OGRE_HOME/bin/Release/plugins.cfg文件的第7, 8两行注释:
Plugin=RenderSystem_Direct3D9
Plugin=RenderSystem_Direct3D11
修改为
# Plugin=RenderSystem_Direct3D9
# Plugin=RenderSystem_Direct3D11
再运行还是不行,通过分析OGRE_HOME/bin/Release/Ogre.log(GORE程序运行产生的日志文件)发现是资源解析的问题。因为之前用OGRE 1.8.1时没问题,可以用OGRE SDK 1.8.1的资源包,具体就是OGRE_HOME/media整个文件夹和OGRE_HOME/bin/Release/resources.cfg文件替换为OGRE SDK 1.8.1(再去官网下载吧)中的相应项,就可以运行了。用“WASD”移动相机,鼠标改变视角,Esc键退出程序。
step 4:运行环境配置
因为不想每次运行程序都要手动拷贝,也不想改变OGRE_HOME目录下的文件。这里采取的策略是:将OGRE_HOME/bin和OGRE_HOME/media这两个文件夹都拷贝到VS解决方案文件夹下(OGRE 1.9的OGRE_HOME/bin和OGRE 1.8.1的OGRE_HOME/media),当然bin/debug和bin/release下的plugins[_d].cfg和samples[_d].cfg还是要改,见上一步。工程目录结构目前是这样的:
另外还要配置工程属性,修改生成目标位置:
项目上右键属性“配置属性 >> 常规 >> 输出目录”所有配置下修改为“$(SolutionDir)bin\$(Configuration)\”:
“配置属性 >> 调试 >> 工作目录”所有配置下修改为“$(TargetDir)”:
4. 问题解决
如果程序还是运行不起来,欢迎给我留言。另外可以查看/bin/Release/Ogre.log(Release版本),搜索“error”,查看错误信息。
5. 参考文献
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Setting+Up+An+Application+-+Visual+Studio
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+1&structure=Tutorials
posted on 2014-02-27 22:37 liangliangh 阅读(4422) 评论(0) 编辑 收藏 举报