自己写第一个“空白Demo程序”

    刚接触OGRE,不知如何入手。看文档?读教程?找例子?还是搜一搜别人写的心得?经过以上的努力之后,还是没有找到入门的感觉。这让我想到了经典的“Hello World!”,于是决定从第一个空白窗口开始,采用“兵来将挡”的战术。

打开VC++2008创建一个新的工程:
    为了方便查看调试信息,我创建的是“Visual C++ -> Win32 -> Win32 Console Application”工程,工程路径为“E:\ogre\OgreDemo”。


完成工程的创建之后,F7进行编译。毫无疑问,编译成功……


接下来,我要使用OGRE。OGRE的入口:ExampleApplication app
编辑OgreDemo.cpp中的代码,如下:

// OgreDemo.cpp : Defines the entry point for the console application.

#include 
"stdafx.h"
#include 
"ExampleApplication.h"

int _tmain(int argc, _TCHAR* argv[])
{
    ExampleApplication app;
    app.go();
    
return 0;
}

编译后出现错误如下:
------ Build started: Project: OgreDemo, Configuration: Debug Win32 ------
Compiling...
OgreDemo.cpp
e:\ogre\ogredemo\ogredemo\ogredemo.cpp(5) : fatal error C1083: Cannot open include file: 'ExampleApplication.h': No such file or directory
Build log was saved at "file://e:\ogre\OgreDemo\OgreDemo\Debug\BuildLog.htm"
OgreDemo - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


      开始采用“兵来将挡”的策略:出现什么问题,那我就去解决什么问题。“fatal error C1083: Cannot open include file”:找不到包含文件……首先确定文件“ExampleApplication.h”的路径,在SDK中:“E:\ogre\OgreSDK_vc9_v1-7-1\include\OGRE\ExampleApplication.h”。包含include、lib目录有多种方法,这里我使用设置环境变量的方法:打开“我的电脑”属性页,选择“高级 -> 环境变量”,新建用户变量:OGRE_SDK  E:\ogre\OgreSDK_vc9_v1-7-1。在这里环境变量设置为SDK根目录,是为了方便引用其他的目录文件。


        接下来,在工程中使用环境变量来包含include目录。打开工程属性页,在“Configuration Properties -> C/C++ -> General -> Additional Include Directories”栏目中填上“$(OGRE_SDK)\include\OGRE”,确认并应用该设置。


      编译后还是出现同样的错误,这里需注意的是:设置完环境变量之后,须关闭VC++2008后再重新打开工程项目,这样才能使环境变量在工程中起作用。编译后出现了不同的错误,如下:
------ Build started: Project: OgreDemo, Configuration: Debug Win32 ------
Compiling...
OgreDemo.cpp
e:\ogre\ogresdk_vc9_v1-7-1\include\ogre\threading\ogrethreadheadersboost.h(29) : fatal error C1083: Cannot open include file: 'boost/thread/tss.hpp': No such file or directory
Build log was saved at "file://e:\ogre\OgreDemo\OgreDemo\Debug\BuildLog.htm"
OgreDemo - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


      用同样的方法包含目录路径($(OGRE_SDK)\boost_1_42),同样的还有($(OGRE_SDK)\include\OIS)。这里可以将($(OGRE_SDK)\include\OGRE)、($(OGRE_SDK)\include\OIS)合为($(OGRE_SDK)\include),需要修改一下OgreDemo.cpp中的代码:#include "OGRE/ExampleApplication.h"。

编译后出现错误如下:
------ Build started: Project: OgreDemo, Configuration: Debug Win32 ------
Compiling...
OgreDemo.cpp
e:\ogre\ogredemo\ogredemo\ogredemo.cpp(9) : error C2259: 'ExampleApplication' : cannot instantiate abstract class due to following members: 'void ExampleApplication::createScene(void)' : is abstract e:\ogre\ogresdk_vc9_v1-7-1\include\ogre\exampleapplication.h(364) : see declaration of 'ExampleApplication::createScene'
Build log was saved at "file://e:\ogre\OgreDemo\OgreDemo\Debug\BuildLog.htm"
OgreDemo - 1 error(s), 5 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

    关于这个错误在这里我就不详细解释(我也不是很清楚),解决方法是定义一个ExampleApplication的派生类MyApp,添加createScene方法。下面给出该类的代码:
MyApp.h
// MyApp.h
#pragma once

#include 
"OGRE/ExampleApplication.h"

class MyApp: public ExampleApplication
{
public:
    MyApp();
    
~MyApp();
private:
    
void createScene();
}
;


MyApp.cpp
// MyApp.cpp

#include 
"stdafx.h"
#include 
"MyApp.h"

MyApp::MyApp()
{
}


MyApp::
~MyApp()
{
}


void MyApp::createScene()
{
}


然后修改OgreDemo.cpp中的代码如下:
// OgreDemo.cpp : Defines the entry point for the console application.
//

#include 
"stdafx.h"
#include 
"MyApp.h"

int _tmain(int argc, _TCHAR* argv[])
{
    MyApp app;
    app.go();
    
return 0;
}


    这样C++代码中就应该没什么问题了,接着就是lib链接库的问题,因为编译完成进行链接时出现了找不到链接库的问题。解决方法是,在“工程属性页 -> Configuration Properties -> Linker -> General -> Additional Library Directories”中添加lib目录路径;在“工程属性页 -> Configuration Properties -> Linker -> Input -> Additional Dependencies”添加所需的库文件名。路径:“$(OGRE_SDK)\boost_1_42\lib;$(OGRE_SDK)\lib\debug”,lib库:“OgreMain_d.lib OIS_d.lib




设置完成之后编译,编译通过:
------ Build started: Project: OgreDemo, Configuration: Debug Win32 ------
Linking...
Embedding manifest...
Build log was saved at "file://e:\ogre\OgreDemo\OgreDemo\Debug\BuildLog.htm"
OgreDemo - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========


编译完成之后,接下来按F5运行程序……
是的,运行出现了错误提示:


    那是因为没有设置工程输出目录,也没有配置调试目录。打开工程属性,将“Configuration Properties -> General -> Output Directory”改为“$(OGRE_SDK)\bin\debug”;将“Configuration Properties -> Debugging -> Working Directory”改为“$(OutDir)”。


    设置完成后再运行,出现下图的界面则表示OGRE的app程序已经成功运行,点击确定,展现在面前的就是这第一个窗口程序——空白的黑色窗口。


至此,我们完成了一个“Hello World”的窗口程序,一个引用了OGRE引擎动态链接库的窗口程序。





posted on 2010-06-12 01:25 OGRE3D游戏开发 阅读(1673) 评论(0)  编辑 收藏 引用 所属分类: OGRE3D学习开发

<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

留言簿

文章分类(4)

最新评论