zoukankan      html  css  js  c++  java
  • Ogre 配置

    环境:win7(64位)+vs2010+orge1.8.1

    说明:orge1.8.1不需要安装vs2010 sp1,自身带了opengl,也不需要安装dx和gl。


    安装SDK,运行Demo


    下载:


    1 OGRE SDK: http://www.ogre3d.org/download/sdk

    2 OGRE Dependencies:http://sourceforge.net/projects/ogre/files/ogre-dependencies-vc++/1.7/

    OGRE Dependencies是Ogre进行编译时需要的支持文件,一般包括OIS库,CG库,GUI库,这些库在Ogre中均经常用到。如果缺少这些文件,则源码无法进行编译,后期编译出来的Ogre也无法使用OIS、CG、GUi等。

    3 Cmake : http://www.cmake.org/cmake/resources/software.html

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。OGRE从1.7开始使用Cmake生成工程文件,主要为方便平台移植。

    4 OGRE 工程向导: http://download.csdn.net/detail/sangni007/5185193 (版本问题,已经失效估计是针对1.7的)

    配置步骤:


    1 解压OgreSDK_vc10_v1-8-1.exe,将解压得到的OgreSDK_vc10_v1-8-1放在D:corgeorgeSpace
    2 设置环境变量,变量名:ORGE_HOME  变量值D:corgeorgeSpaceOgreSDK_vc10_v1-8-1
    3 解压Dependencies得到Dependencies文件夹啊,放到D:corgeorgeSpaceOgreSDK_vc10_v1-8-1中
    4 进入D:corgeorgeSpaceOgreSDK_vc10_v1-8-1Dependenciessrc打开vs2010.sln,分别在Released,Debug下进行编译(vs2010->Build->Configuration Manger中切换)
    5  进入D:corgeorgeSpaceOgreSDK_vc10_v1-8-1(注意不是进入D:corgeorgeSpaceOgreBuild),打开Ogre.sln,编译工程,把SampleBrowser设置为默认启动项(默认是AllBuild为启动项)。运行即可,运行时选择opengl。


    安装工程向导


    安装Ogre_VC10_AppWizard_1.8.0.exe到SDK目录下





    源码编译

    1 解压源码
    2 把Dependencies放到解压后的 D:corgeorgeSpaceogre_src_v1-8-1中
    3 进入D:corgeorgeSpaceOgreSDK_vc10_v1-8-1Dependenciessrc打开vs2010.sln,分别在Released,Debug下进行编译(vs2010->Build->Configuration Manger中切换)
    4 打开cmake,设置好路径如下图,然后两下Configure,一下Generate



    5  打开D:corgeorgeSpaceOgre_src_sdkOGRE.sln 分别在release,debug下编译,然后会在D:corgeorgeSpaceOgre_src_sdkin elease(debug)下会产生我们需要的dll文件,release和debug中都有相关配置文件,另外D:corgeorgeSpaceOgre_src_sdkin中minsizerel,relwithdebinfo两个文件夹中也有相关配置文件,我们可以利用这些配置文件和生成的dll文件来手动构建自己的ogre工程。


    手动(用源码)构建工程

    1 新建win32工程

    也可使用空工程,需要做些配置,Linker->System->SubSystem:Windows (/SUBSYSTEM:WINDOWS)


    2 引入头文件

    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1includeOGRE;
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1includeOIS;
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1include;(include下没有.h文件但是代码里有的引用是带有文件夹目录的比如<OIS/OIS.h>,所以不引include会出问题)
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oost;

    这里用的sdk的头文件,也可以用源码的头文件,直接copy到当前工程新建个lib就ok

    源码的头文件位于,cmake编译前的D:corgeorgeSpaceogre_src_v1-8-1OgreMaininclude

    OIS是独立库,头文件直接从sdk中取

    3 引入库文件

    kernel32.lib
    user32.lib
    gdi32.lib
    winspool.lib
    shell32.lib
    ole32.lib
    oleaut32.lib
    uuid.lib
    comdlg32.lib
    advapi32.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOgreMain.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOIS.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOgrePaging.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOgreTerrain.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOgreProperty.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
    eleaseOgreRTShaderSystem.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_thread-vc100-mt-gd-1_49.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_date_time-vc100-mt-gd-1_49.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_date_time-vc100-mt-1_49.lib
    D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_thread-vc100-mt-1_49.lib

    部分库可能不是必须的,没做详细区分,这里用的sdk的库文件,也可用源码生成的库
    源文件编译后的
    lib位于D:corgeorgeSpaceOgre_src_sdklib elease(debug)
    dll位于D:corgeorgeSpaceOgre_src_sdkin elease(debug)

    4 代码


    FirstOgre.h
    #pragma once
    
    #include "resource.h"
    #include "ExampleApplication.h"
    
    class FirstOgre : public ExampleApplication
    {  
    protected:  
    public:  
    	FirstOgre();  
    
    	~FirstOgre();  
    
    protected:  
    	void createScene(void);
    
    };  

    FirstOgre.cpp
    #include "stdafx.h"
    #include "FirstOgre.h"
    
    using namespace std;
    FirstOgre::FirstOgre()
    {
    
    }
    
    FirstOgre::~FirstOgre()
    {
    
    }
    
    void FirstOgre::createScene(void)
    {
    	Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
    
    	Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
    	headNode->attachObject(ogreHead);
    
    	// Set ambient light
    	mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));
    
    	// Create a light
    	Ogre::Light* l = mSceneMgr->createLight("MainLight");
    	l->setPosition(20,80,50);
    }
    
    INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
    
    {
    	cout<<"fuck0"<<endl;
    	FirstOgre app;
    
    	try {
    		app.go();
    	} catch( Ogre::Exception& e ) {
    
    		//MessageBox( NULL, e.getFullDescription().c_str(), "An exception", MB_OK | MB_ICONERROR | MB_TASKMODAL);
    
    	}
    	cout<<"fuck1"<<endl;
    	return 0;
    }

    5 配置工程属性


    1 直接把相关输出目录,调试目录设置到sdk目录下

    General->Output Directory:设置到SDK目录->bin->release(Debug)
    Debugging->Working Directory:设置到SDK目录->bin->release(Debug)
    Link->General->Output File:设置到SDK目录->bin->release(Debug)->工程名.exe

    2 纯手动,相关目录就用当前工程,不设置到sdk目录

    General->Output Directory:使用默认设置$(SolutionDir)$(Configuration)
    Debugging->Working Directory:默认设置为$(ProjectDir),需要修改为$(SolutionDir)$(Configuration)
    Link->General->Output File:这个使用默认配置
    这种方法需要将如下文件copy到当前工程的realease(debug)文件夹中


    1 修改plugins.cfg 把 Plugin=RenderSystem_Direct3D9这个注释掉,ogre里面自带的是opengl包,不需要d3d的东西,启动后选择d3d和opengl的界面只有opengl选项

    2 修改resources.cfg 把media相关的引用路径都改成sdk里面media的路径,这个文件默认是使用的相对路径

    3 OIS.dll是独立库,不是源码编译出来的,直接从ogre sdk中copy

    4 OgreProperty.dll,Direct3D9.dll在例子程序中没用到,可以去掉

    5 cg.dll这个是从源码的D:corgeorgeSpaceogre_src_v1-8-1DependenciesinRelease文件夹下copy来的,没这个文件会闪退(暂时搞不清这个库在sdk工程中是怎么引用的,动态?待议)



    6 编译,运行,选择opengl,然后可以在黑背景下看到一头ogre。


  • 相关阅读:
    [转载]DB2数据库移植罕见成绩片面理睬(4)
    [转载]接续刷新Sybase数据库后果大搜聚1
    [转载]DB2数据库移植罕见结果周全理会(3)
    [转载]有关PB/Sybase斥地过程中数据库转移引见 (2)
    [转载]如何将sybase的sa暗码重置为空
    [转载]DB2数据库移植罕有成绩片面解析(1)
    [转载]精益求精Sybase数据库题目成果年夜征求8
    [转载]精益求精Sybase数据库标题大包括6
    [转载]千锤百炼Sybase数据库题目大大搜罗7
    [转载]DB2数据库移植罕有结果片面解析(2)
  • 原文地址:https://www.cnblogs.com/nafio/p/9137721.html
Copyright © 2011-2022 走看看