您的位置:首页 > 其它

OGRE 1.9 的第一个程序(OGRE HelloWorld程序)

2014-02-27 22:37 295 查看
平台: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中加入如下代码:

#include "BaseApplication.h"

class MyClass : public BaseApplication
{
public:
MyClass(void) { }
virtual ~MyClass(void) { }
protected:
virtual void createScene(void);
};

void MyClass::createScene(void)
{
// shadow
mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);
mSceneMgr->setAmbientLight(Ogre::ColourValue(0.2f, 0.2f, 0.2f));

// light and light sphere
Ogre::Light* pointLight1 = mSceneMgr->createLight("pointLight1");
pointLight1->setType(Ogre::Light::LT_POINT);
pointLight1->setDiffuseColour(Ogre::ColourValue::White);
pointLight1->setSpecularColour(Ogre::ColourValue::White);

Ogre::Entity* sphereEnt = mSceneMgr->createEntity("MyEntity", "sphere.mesh");
Ogre::SceneNode* lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("LightNode");
lightNode->attachObject(sphereEnt);
lightNode->setScale(0.1f,0.1f,0.1f);
sphereEnt->setMaterialName("BaseWhiteNoLighting");

Ogre::Vector3 lightPosition(0,500,150);
lightNode->setPosition(lightPosition);
pointLight1->setPosition(lightPosition);

// Ninja
Ogre::Entity* entNinja = mSceneMgr->createEntity("Ninja", "ninja.mesh");
entNinja->setCastShadows(true);
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entNinja);

// ground
Ogre::Plane plane(Ogre::Vector3::UNIT_Y, 0);
Ogre::MeshManager::getSingleton().createPlane("ground", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
plane, 1500, 1500, 20, 20, true, 1, 5, 5, Ogre::Vector3::UNIT_Z);
Ogre::Entity* entGround = mSceneMgr->createEntity("GroundEntity", "ground");
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entGround);
entGround->setMaterialName("Examples/Rockwall");
entGround->setCastShadows(false);

// set camera position
mCamera->setPosition(100,200,-300);
mCamera->lookAt(0,100,0);
}

int main(int argc, char *argv[])
{
// Create application object
MyClass app;

try{
app.go();
}
catch( Ogre::Exception& e ){
std::cerr << "An exception has occured: " <<
e.getFullDescription().c_str() << std::endl;
}
return 0;
}


添加好之后,工程是这个样子的:





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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: