ogre的初始化与启动以及显示对象设置

Ogre2.1 分析笔记(二)-程序启动流程 1.      初始化一个Root对象 Ogre::Root *root = new Ogre::Root(); 2.      在初始化Root对象时,Ogre会同时初始化D3D11和OGL3+两种渲染系统。此步骤中应该选择将哪个渲染系统作为当前的渲染系统。 std::string sRenderSystem = "OpenGL 3+ Rendering Subsystem"; 阅读详情

ogre的使用方法1---自动设置

1、ogre初始化:
首先实例化一个Root对象

 Root * root = new Root();
 Root * root = new Root("plugins.cfg"); 
 Root * root = new Root("plugins.cfg", "ogre.cfg");
 Root * root = new Root("plugins.cfg", "ogre.cfg", "ogre.log");//系统默认这样,当你没有填写参数的时候,系统就认为采用了默认的这些值
 Root * root = new Root("", "");

2、plugins.cfg文件
Ogre中所谓的插件就是符合Ogre插件接口的代码模块(在 Windows下面是DLL文件,在Linux下是.so文件),比如场景管理(SceneManager)插件和渲染系统(RenderSystem) 插件等。在启动的Ogre时候,他会载入plugins.cfg配置文件来查看有哪些插件可以被使用。
配置文件的内容如下:

?
1
2
3
4
5
6
7
8
9
10
# Defines plugins to load
  # Define plugin folder
   PluginFolder=.
  # Define plugins
  Plugin=RenderSystem_Direct3D9
  Plugin=RenderSystem_GL
  Plugin=Plugin_ParticleFX
  Plugin=Plugin_BSPSceneManager
  Plugin=Plugin_OctreeSceneManager
  Plugin=Plugin_CgProgramManager

警告:可能你也注意到了在“=”的两边并没有写入空位符号(比如空格或者Tab),因为在这里如果填入空位的话就会被系统认为是语法错误,导致无法载入插件。
3、Ogre.cfg文件

?
1
2
3
4
5
6
7
8
// 如何配置ogre
Root * root = new  Root();
bool rtn = root->showConfigDialog(); //确认是否已经按下OK按钮
// Ogre也提供了直接载入Ogre.cfg文件来配置程序的方法:
if (!root->restoreConfig())
root->showConfigDialog();
//通过使用Root对象的通过使用saveConfig()方法,你也可以在任何时候保存当前状态到Ogre.cfg文件(或者是其他在你构建Root实例时候提供给系统的文件)。
root->saveConfig();

 

4、Ogre.log文件
Ogre提供了日志管理对象作为记录系统诊断和异常信息的日志工具。
使用手动方法来建立一个日志管理器实例

  //首先通过LogManager::getSingleton()建立一个日志管理器实例。
  LogManager * logMgr = new LogManager;//
  Log * log = LogManager::getSingletonn().createLog(“mylog.log”, true, true, false);//
 //在我们已经建立了日志管理器之后,我们就不需要设置第三个参数了。
  Root * root = new Root(“”,””);// 

  在createLog方法中,第一个参数指定了Ogre的日志输出到“mylog.log”文件;
  第二个参数告诉了Ogre是否把当前日志作为系统默认的日志来处理;
  第三个参数表明是否把记录到日志中的信息是否同样的输出到std::cerr(标准错误流)中去;
  第四个参数用来告诉系统是否真的要把信息输出到文件中(也就是说当为true的时候,并没有真的向日志文件输出信息)。
5、渲染窗口
  root->initialise(true, ”My Render Window”);
  RenderWindow * window =root->getAutoCreatedWindow ();///用来得到自动创建的渲染窗口实例的指针。
  initialise方法的第一个参数告知Ogre系统是否自动建立一个渲染窗口来给用户使用。
           第二个参数并且把“My Render Window”作为程序窗口的标题。
  //sceneMgr是一个指向已存在SceneManager(场景管理器)实例的指针

 Camera * cam = sceneMgr ->createCamera(“MainCamera”);//创建一个摄像机
 cam->setNearClipDistance(5);     //摄像机的近截面
 cam->setFarClipDistance(1000)    ;    //摄像机的远截面,必须要保证近截面和远截面之间距离等于或者小于1000就可以
 cam->setAspectRatio(Real(1.333333));//setAspectRatio方法把屏幕的纵宽比设置成为4:3

  在渲染窗口中创建一个视口“Viewport”

 Viewport * vp = window->addViewport(camera);//通过指向它的window指针创建了一个视口对象的实例
 vp->setBackgroundColour(ColourValue(0, 0, 0));//设置了视口(viewport)的背景颜色。

6、渲染循环
  调用Root对象的srartRendering()方法是最简单的手段。
  root->startRendering();

  帧监听(Frame listener)

    如果决定使用startRender()来开始你的渲染过程,你就只能通过使用帧监听对象来在渲染循环中插入你自己的代码了。所谓帧监听对象就是一个符合FrameListener接口的类的实例。当Ogre渲染每一帧的开始和结束的时候会回调FrameListener接口的方法。

  建立并挂载一个帧监听对象到Ogre的Root中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class  MyFrameListener : public  FrameListener{
  public :
           bool frameStarted ( const  FrameEvent &evt); //
           bool frameEnded ( const  FrameEvent &evt ); //
  };
  
  bool MyFrameListener::frameStarted ( const  FrameEvent &evt){
          //在每一帧画面渲染前,调用这里你写好的代码
           return  true ;
}
  
bool myFrameListener::frameEnded ( const  FrameEvent &evt ){
          //在每一帧画面渲染后,调用这里你写好的代码
          return  true ;
}
 
Root * root = new  Root(); //
MyFrameListener myListener; //
//在这里你需要在调用startRendering()方法前,注册你的帧监听对象!!!
root->addFrameListener(myListener); //
root->startRendering(); //

 

ogre的使用方法2---手动设置

1、载入插件  -- 两种方法

  void loadPlugin(const String& pluginName);//加载

  void unloadPlugin(const String& pluginName);//卸载

Ogre程序带来了以下的插件:
  Plugin_OctreeSceneManager:以八叉树空间管理为基础的OctreeSceneManager(八叉树场景管理器——OSM)。同时包含了从其中派生出来的      TerrainSceneManager(地形场景管理器),用来处理从高度图(heightMapped)派生出来的地形场景。
  Plugin_BSPSceneManager:提供一个对BSP场景的管理系统,用来读取和处理来自雷神之锤III中的地图文件。不过在今天看来这已经是一个古老的地图格式,并且已经没有人再维护和支持它了(提供这个插件的唯一原因是为了某个演示程序的执行)。
  Plugin_CgProgramManager:这个插件负责载入、分析、编译并且管理Cg语言所写的GPU渲染程序。在今天看来,似乎Cg逐渐被当今技术所抛离(它只能支持3.0版本以前的profiles),因此其价值也越来越小;幸好Ogre在其内部同时支持HLSL和GLSL程序的GPU开发。
  Plugin_ParticleFX:粒子系统管理插件;提供了很多粒子的效果器(Affector)和发射器(Emitter),用来实现一些基本的粒子特效。
  RenderSystem_Direct3D9:Windows上面对Direct3D 9的抽象层实现。
  RenderSystem_GL:针对所有平台上OpenGL的抽象层实现。

2、渲染系统(Render Systems)

  使用插件管理的loadPlugin()方法来载入所需的API:

 //建立一个没有配置文件的Root实例
 Root *root = new Root(“”, “”);//
 root->loadPlugin(“RenderSystem_Direct3D9”);//
 root->loadPlugin(“RenderSystem_GL”);//

  RenderSystemList* getAvailableRenderers();//获得系统支持那种渲染系统

  设置Ogre应用程序使用的渲染系统,一下代码设置如何从可用渲染系统列表中找出OpenGL渲染系统,并将其设置导入系统中去。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//RenderSystemList是std::vector类型
  RenderSystemList *rList = root->getAvailableRenderers();
  RenderSystemList::iterator it = rList->begin();
  while (it != rList->end()){
           //Ogre的字符串类型String是std::string的扩展
       RenderSystem *rSys = *(it++);
        if (rSys->getName().find(“OpenGL”)){
           //把OpenGL渲染系统设置为我们使用的渲染系统
           root->setRenderSystem(rSys); //
         break ;
       }
}
//注意,如果系统没有支持OpenGL的话,我们就没有设置任何渲染系统!这将会
//引起一个Ogre设置期间的异常产生。

 

3、渲染窗口(Render Windows)

  手动启动Ogre应用程序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include “Ogre.h”
   
   //建立一个没有配置文件的Root实例
  Root *root = new  Root(“”, ””);
   
   //载入渲染系统插件
   root->loadPlugin(“RenderSystem_Direct3D9”);
   root->loadPlugin(“RenderSystem_GL”);
  
//在这里我们伪装成用户已经选择了OpenGL渲染器
String rName(“OpenGL Render Subsystem”);
RenderSystemList * rList = root->getAvailableRenderers();
RenderSystemList::iterator it = rList->begin();
RenderSystem *rSys = 0 ;
 
while (ii != rList->end()){
           rSys = * (it++);
           if (rSys->getName() == rName){   
                    //设置渲染器,并结束循环
                    root->setRenderSystem(rSys);
                     break ;
      }
  }
  //如果没有找到一个可用的OpenGL渲染器,就在这里结束程序。
  if (root->getRenderSystem() == NULL){        
           delete root;
  return  - 1 ;
  }
  //root初始化的时候,我们可以传入一个false值来告知Root不用给我们创建渲染窗口。
  root->initialise( false );
//在这里我们仍然使用默认的参数来创建渲染窗口
RenderWindow *window = rSys->createRenderWindow(
           “Manual Ogre Window”,       //窗口的名字
          800 ,                          //窗口的宽度(像素)
          600 ,                          //窗口的高度(像素)
          false ,                        //是否全屏显示
  0 );                                    //其他参数,使用默认值
  //在这之后你就可以向之前所说的一样创摄像机和视口了。

 

4、摄像机和场景管理(Camera and SceneManager)

  场景管理器  

  SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC, “MySceneManager”); 

  摄像机(Camera)

?
1
2
3
4
5
6
7
8
9
//sceneManager是一个已经存在的场景管理器实例的指针。
  //我们在这里构建名称为“MainCam”的摄像机。
  Camera *camera = sceneMgr->createCamera(“MainCam”); //
  //并不需要计算什么,可以直接从视口中得到这个尺寸
  camera->setAspectRatio( 1 .333333f); //3:4的纵宽比
  //30度角可以让我们看到一个长而远的视野
camera->setFOVy( 30 .0f); //视线方向和视截体的下平面(以及上平面)拥有30度夹角
  camera->setNearClipDistance( 5 .0f); //近截面距离摄像机5单位
  camera->setFarClipDistance( 1000 .0f); //远截面距离1000单位

  渲染模式

  摄像机支持3种不同的渲染模式:边框,实体,“点”(只渲染顶点)。

 camera->setPolygonMode(PM_WIREFRAME);//边框
 camera->setPolygonMode(PM_POINTS);//点
 camera->setPolygonMode(PM_SOLOD);//实体,系统默认的参数是PM_SOLOD。
 PolygonMode mode = camera->getPolygonMode();//

  位置和变换(Position and Translation)

  摄像机是一个MovableObject(活动对象)接口的实现,因此也具有这对象的所有方法和特性。

  绝对坐标:

 //确认我们已经有一个指向“Camera”类型实例的指针camera。
 camera->setPosition(200, 10, 200);//
 //也可以用一个三维向量来设置摄像机坐标,在我们得到场景坐标时候这么做会方便一些
 //camera->setPosition(Vector3(200, 10, 200));//把摄像机设置到世界坐标系的绝对点(200,10,200)

  相对坐标:

 //假设摄像机还在我们之前设置的200, 10, 200空间位置上。
 camera->move(10, 0, 0); //摄像机移动到210, 10, 200
 camera->moveRelative(0, 0, 10); //摄像机移动到210, 10, 210

  指向,方向,和“着眼点”(Direction,Orientation,and“Look-At”)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void  setDirection(Real x, Real y, Real z);
   void  setDirection( const  Vector3& vec);
   Vector3 getDirection( void ) const ;
   Vector3 getUp( void ) const ;
   Vector3 getRight( void ) const ;
   void  lookAt( const  Vector3& angle);
   void  lookAt(Real x, Real y, Real z);
   void  roll( const  Radian& angle);
   void  roll (Real degrees){roll (Angle ( degrees ) );}
  void  yaw( const  Radian& angle);
  void  yaw(Real degrees){yaw (Angle ( degrees ) );}
  void  pitch( const  Radian& angle);
  void  pitch(Real degrees){yaw (Angle ( degrees ) );}
  void  rotate( const  Vector3& axis, const  Radian& angle);
  void  rotate( const  Vector3& axis, Real degrees){
  rotate(axis, Angle(degrees));}
  void   setFixedYawAxis (bool useFixed, const  Vector3 &fixedAxis=Vector3::UNIT_Y)
  const  Quaternion & getOrientation ( void ) const
  void  setOrientation( const  Quaternion& q);
  void  setAutoTracking(bool enabled,SceneNode *target= 0 , const  Vector3 &offset=Vector3::ZERO);
 

  可以通过调用roll(),yaw(),以及pitch()来控制摄像机相对于自身的方向进行环绕Z轴(Roll:滚动)、Y轴(Yaw:偏移)或者X轴(Pitch:倾斜)的旋转;

  setDirection()方法通过一个三维向量来在本地空间(Local space)设置方向;

  rotate()方法被用来操作摄像机绕着给定的轴向旋转;

  lookAt()作用是直接让摄像机方向对准世界空间内的目标点或者对象;

    setFixedYawAxis()可以锁定某一个轴向的自由度。

  setAutoTracking() 使摄像机总是盯着场景中的某一个节点。

  从世界空间转换到屏幕空间(World Space to Screen Space)

  //x和y都是单位坐标系(范围从0.0到1.0)屏幕上的坐标

  Ray getCameraToViewportRay(Real x, Real y) const;

  视口(Viewport) -- 可实现画中画功能

  1 视口也拥有自己的z-order(z次序)用来决定哪个是视口在哪个视口前面。一个z-order对应一个视口。

  2 视口拥有自己的背景颜色属性。

   默认情况下,Ogre系统在每一帧更新深度缓存和颜色缓存;你可以通过视口的方法对其进行管理。

5、主渲染循环(Main Rendering Loop)

  Ogre基础的应用程序典型的运行过程是:不间断的循环渲染每帧画面,直到你停止程序。

  手动渲染可以使用renderOneFrame()方法。

手动渲染循环的框架例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool keepRendering = true ;
  //在这里填入所有这个章节之前提到的设置过程:
  //载入插件,创建渲染窗口和场景管理器以及摄像机和视口,
  //然后再场景中填入你希望的内容。
  while (keepRendering)
  {
  //在这里处理引擎使用的网络消息。
  //在这里处理引擎使用的输入消息。
  //根据消息更新场景管理状态。
//根据新的场景管理状态,渲染下一帧。
root->renderOneFrame();
//检查是否需要退出渲染循环
//注意:NextMessageInQueue()这个函数只是为了便于解释程序含义
//而虚构出来的函数——Ogre引擎中并没有实现它。
     If(NextMessageInQueue() == QUIT)
     {
          keepRendering = false ;
     }
}
 
//在这里进行你需要的清理工作
//然后,关闭Ogre
 
delete root;
OGRE与Qt的结合(一)----使用OGRE渲染QWidget 最近几天开始重新学习Ogre,这次从源码编译了Ogre2.1,编译过程基本跟Ogre1.8.1类似,连第三方依赖库都是用的官网推荐的以前版本的,此处不多说了,网上有很多教程,现在给出下载连接。          Ogre2.1的源码:  https://bitbucket.org/sinbad/ogre/branch/v2-1          Dependencies: https://bi 阅读详情

相关推荐

OGRE 3D引擎开发入门实战源码包

OGRE(Object-Oriented Graphics Rendering Engine)是一个开源、跨平台的C++ 3D渲染引擎,专注于高效、灵活的图形渲染能力。它广泛应用于游戏开发、虚拟现实、仿真系统及可视化项目中。OGRE采用模块化设计,分离核心逻辑与渲染实现,使开发者能更专注于场景构建与功能实现。其核心优势包括跨平台支持(Windows、Linux、macOS)、插件式渲染系统(支持Direct3D、OpenGL等)、强大的资源管理机制,以及丰富的社区与文档支持。

weixin_30481539的博客 924

Ogre_v1.12.0 最新github版升级总结

Ogre_v1.12.0版中将 图片解码器完全单独抽离出来,仅内置 DDS和ETC两种图片解码的支持,不再依赖庞大的FreeImage图片解码库,这意味着更新的核心。编译成dll仅3M多,相比以前8M左右的包体,大大缩小了程序文件,在Android上编译成apk(压缩3M的so)只有接近2M的大小, 同样如果要支持png jpg bmp等多种图片格式,需要以插件的形式加载 Codec_STBI 插...

yangchuangbao的博客 334

从零开始:手把手教你检查并更新英伟达GPU驱动和CUDA版本(Windows/Linux双平台)

本文详细指导如何在Windows和Linux系统上检查并更新英伟达GPU驱动和CUDA版本,解决版本不匹配导致的常见问题。涵盖驱动更新、CUDA Toolkit安装、版本冲突排解及性能优化技巧,帮助开发者高效管理GPU计算环境。

weixin_29237635的博客 701

运行Ogre Demo出错

<br />     运行  OGRE Demo1.7.0的时候出错,弹出一个对话框:<br />出现错误内容如下:<br /> OGRE EXCEPTION(0:IOException): Cannot create settings file. in Root::saveConfig at ../../OGRE/OgreMain/src/OgreRoot.cpp (line 382)<br /> <br />搜索了一下,原来是:<br />运行SampleBrowser要生成ogre.cfg和ogre.

huadianjie的专栏 1029

用户行为路径可视化_桑葚图(Sankey)

桑基图对用户行为路径可视化的blog学习笔记。

徐思孟的博客 3855

傻白入门芯片设计,SystemVerilog Assertion(SVA)学习(二十一)

对SVA(SystemVerilogt Assertion)有了更深刻的认识,对经典的AveMC形式验证工具进行了介绍

qq_46675545的博客 8471

OGRE 初始化

第四章 Ogre的初始化 读到这本书的这个章节的时候,相信你已经很好的了解了Ogre 3D的设计理念,以及其中各部分协同工作的方式。现在已经可以开始用Ogre API真正的写一个应用程序了。这个章节给你提供一个简单的开端,实现了一个Ogre API的外壳,这些内容也是任何Ogre应用程序所需要的基础。 Ogre最有名的“卖点”之一,就是它所拥有的良好的适应性以及弹性。你可以根据自己

debugconsole的专栏 3930

用 Coze 打造纯自动化 AI 情报助手

本文将引导您逐步构建一个简易的AI情报助手,从提示词到工作流,再到卡片消息,详细讲解了如何利用Coze平台开发自动化工具。过程简单易懂,何不亲自动手一试?如果您对此类内容感兴趣,敬请关注本作者。未来,我将带来更多精彩的AI工具教程,助您迅速掌握各类AI应用。在这个AI时代,让您领先一步。t=O83A2AGI.NET AI 教程 震撼!用 Coze 打造纯自动化 AI 情报助手震撼!

xinzhaobuxuan的博客 2531

ogre的主要渲染流程

很早以前就想写一些关于OGRE的文章了,一直没机会。 理解一个渲染引擎,我觉得最重要的是先抓住了它的主架构,它的主线,渲染流程,不然的话,一个引擎几万行,甚至几十万行的代码,光是打开solution就能吓你一跳了,OGRE也有十几万行的代码量,我一开始看它的时候也是无从下手,感觉代码太多了,不知道从哪开始看好,这个class看看,那个class看看,由于对整个引擎没有一个清晰的认识,看过了也印象不

690

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 379

第一章 电力电子仿真软件 PLECS简介

PLECS是瑞士Plexim公司开发的电力电子仿真软件,具有快速仿真、丰富元件库和热分析功能。软件提供单机版和嵌入MATLAB的版本,支持多平台安装且流程简单。首次运行需获取授权文件,提供60分钟演示模式。界面包含模型创建、帮助文档和元件库浏览器等功能区域,操作便捷。该软件是专业高效的电力电子系统仿真工具。

501

OGRE简析(一)

------OGRESampleBrowser框架解析 “伟大航路,我把世界上的一切都放在了那里,有种的话就去领取吧” 这是OGRE中文网的一则广告,我想,无论作为OGRE的学习者还是漫漫人生的一名旅人,这句话都是非常不错的激励语。放在这,是否能够让你隐约看到属于自己的新世界? 简介 Ogre(Object-orientedGraphics Rendering Engine)是一款优秀的C

相信爱的力量,坚持自己的梦想。 1451

【WRF数据准备】生成 LCZ 对应的FRC_URB2D

WRF 静态地理数据准备

WW、forever的博客 410

OGRE 启动顺序

启动过程         1、创建Root对象         2、定义Ogre将要是用的资源         3、选择并设置渲染系统DX,OL         4、创建渲染窗口OGRE所处的窗口         5、初始化你要是用的资源         6、用这些资源来建立一个场景         7、设置第三方库或插件         8、创建一些帧监听         9、

luyuncsd123的专栏 816

Access查询中的Dlookup函数的妙用

在Microsoft Access中,处理和分析数据的过程中,常常会遇到需要根据条件从其他记录中提取特定数据的情况。这时候,Dlookup函数就成了开发者和数据分析师的得力助手。今天我们将通过一个具体的实例,详细探讨如何利用Dlookup函数来解决复杂的查询问题。

m0_62153576的博客 295

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OGRE中example程序的启动流程

 OGRE中example程序的启动流程2008-05-20 23:081. 创建root对象mRoot = new Root(pluginsPath, mResourcePath + "ogre.cfg", mResourcePath + "Ogre.log");2. 设置资源路径(从resources.cfg文件中载入设置)virtual void setup

遐迩思的专栏 1130

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ogre 学习笔记系列(三)启动过程 参考 ExampleApplication.h

1、入口: /// Start the example virtual void go(void) { if (!setup()) return; /*渲染流程 1. 调用帧监听者的frameStarted()函数 2. 调用当前的渲染窗口的update()函数 a) 调用场景管理器的_renderScene()

pathfinder 1535

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

基础教程九(Ogre的启动顺序)

介绍在这一课里,你将学习如何启动OGRE,而不用示例框架。学习完之后,你将会创建你自己的Ogre应用程序,且不使用ExampleApplication或ExampleFrameListener。你能在这里找到本课的代码。当你学习本课程时,你应该逐个地往你的工程里添加代码,编译并观察结果。准备开始 初始代码 #include #include #i

thenile的专栏 1396

Ogre学习记录(一)-启动流程

1.create the root object. 创建根对象 2.define the resource

tinyFatAries的专栏 588

ogre 创建地形

ogre 创建地形 先来看代码: void TutorialApplication::createScene(void) { // Create your scene here :) // 设置相机的位置,因为地形一般都比较大,所以设置得远一点 mCamera->setPosition(Ogre::Vector3(1683,50,2116)); mCamera->lookAt(

缥缈的云 专栏 634

OGRE SampleBrowser框架解析

------OGRE SampleBrowser框架解析 “伟大航路,我把世界上的一切都放在了那里,有种的话就去领取吧” 这是OGRE中文网的一则广告,我想,无论作为OGRE的学习者还是漫漫人生的一名旅人,这句话都是非常不错的激励语。放在这,是否能够让你隐约看到属于自己的新世界? 简介 Ogre(Object-oriented Graphics Rendering Engine)是一

痞子龙3D编程 5427

Ogre启动过程&原理

#include #include #include #include using namespace Ogre; class ExitListener : public FrameListener { public: ExitListener(OIS::Keyboard *keyboard) : mKeyboard(keyboard) { }

liygcheng's coding world - 1861

Ogre源码分析(一)Root类,Facade模式

<br />Ogre中的Root对象是一个Ogre应用程序的主入口点。因为它是整个Ogre引擎的外观(Façade)类。通过Root对象来开启和停止Ogre是最简单的一种方式;当你构造构造一个Root实例的时候你就启动了整个Ogre,当析构的时候(让它停止活动或者执行delete删除它)Ogre也就关闭了。<br />API手册中这样介绍到:Ogre::Root 类代表了客户应用程序的入口点。在这里,应用程序可以获得系统的重要的访问权,也就是获取渲染系统 ,管理配置文件,日志,和访问系统的其他类(果然是Fa

rbagglo的专栏 2759

【Ogre编程入门与进阶】第十四章 Ogre渲染目标

14.1 概念总览 14.1.1 渲染目标(Render Target) 在我们继续下面的学习之前,我们首先来了解一下与渲染相关的概念。首先我们看一下渲染目标的概念。简单的说,渲染目标就是一个用来保存Ogre渲染结果的存储区域。在Windows平台下,我们通常是将Ogre的渲染结果保存在一个“窗口”中,那么这个窗口就是一个渲染目标。同理,我们可以把渲染结果存储在别的地方(不一定是窗口中),也就

Everything is possible 2342
上一篇: [OpenGL ES 03]3D变换:模型,视图,投影与Viewport
下一篇: 关于 Demo_Ocean 例子的分析
linuxheik
博客等级 码龄15年 865粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值