ogre简介

OGRE是什么?

OGRE(面向对象图形渲染引擎)是一个面向场景,C++编写设计的灵活的三维引擎,使它更容易和更直观的开发,利用3D硬件加速生成应用程序。像Direct3D和OpenGL的抽象细节底层类,并提供基于世界的物体和其他直观的类的接口。

它能做什么?

更多的特性,查看Ogre特征,或者查看ogre的截屏图

是一个游戏引擎?

目前OGRE(实际上已经)用来开放游戏,但是它是故意设计成功世界级图形解决方案;其他功能,如声音,网络,AI,碰撞,物理等,你需要将它和其他库结合,一些框架也已完成,有碰撞、物理整合的例子有描述。

为什么?好,这个是一个原因:并不是每一个人都需要3D引擎制作游戏,所以我们认为你为游戏,模拟,业务应用,一切用OGRE。其次即使在游戏行业,需求都有很大的不同,比如MMORPG(大型网游),FPS(第一人称射击),飞行模拟,需要不同碰撞物理系统的格斗游戏。如果OGRE都有这些特性,相信不是很好的设计,相反我们提供了友好的接口设计,如果需要,你可以选择其他库。许多游戏开发人员都很认可这种设计,因为没内在的约束。一个新的用户搭建一个fps游戏风格是非常艰难的,但是有越来越多的现成框架,使用OGRE提和给定其他库结合完整解决方案,使得OGRE保保持独立性灵活的融入。一个标准的宗旨,基于组件的设计是和其他库协同和整合,而不是同化。

为什么考虑使用它(而不是其他数不清的3D引擎)?

许多其他引擎,虽然技术上非常令人深刻,但是缺乏凝聚力的设计和一致的文档,无法能够有效的使用。他们中许多特性,例子的演示,但是没愿景。像其他软件,越臃肿。大多数去引擎,也用于游戏或者演示特定的风格(比如FPS类型,地形漫游)。

OGRE是不同的。OGRE的LED设计不是特性的LED,每个特性的设计底层到整体设计优雅,总是尽可能全面记录,意味着总有一个整体的一个部分特性。质量比数量好,因为数量可以在以后添加,质量永远不可能被添加回归。了解OGRE使用合理的设计原则,尝试多次使用商业软件提的设计模式。核心开发人员刻意的少,所有成员都有丰富的软件和社区经验。补丁来之社区,他们接受质量和凝聚力OGRE哲学严格审查。

OGRE不承当什么类型游戏和演示,灵活类层次结构允许您设计插件专门做你喜欢的任何场景。使室内的速度快吗?好,使用现有的BSP场景管理器/ PVS插件。想要一个室外景观吗?再次用场景管理器插件。引擎其他部分和以前一样。

所以答案是你如果喜欢优雅的设计,灵活和清晰的文档,那选择OGRE,你知道这是有趣的情景。

真的是免费?

OGRE是MIT协议,意味着你只有喜欢都可以使用,在把我们的版权文件COPYING 复制到你的程序目录下。源代码到你的程序,或者你修改的OGRE没有发布。

那里找到更多?

如果你想了解OGRE开发路线,你可以打开OGRE 手册,WIKI,阅读教程,有助于你快速掌握.

当然你如果需要支持,你也可以直接联系开发小组

ogre特征

ogre2.1已经在开发的路上,也许本文不是最新的ogre特征。

主要功能

  • 简单易于使用的面向对象接口设计,3D场景渲染最大限度的减少所需量,实时的Direct3D/ OpenGL实现
  • 可拖着的框架,使得你的应用程序运行快速和简单
  • 通用的渲染管理,空间剔除、处理透明度为你自动节省宝贵时间
  • 干净,整洁的设计,引擎类的完整文档
  • 经过验证,稳定在于一些商业产品

平台与3D API支持

  • 支持Direct3D 9 & 11, OpenGL (incl. ES, ES2, ES3 and OGL3+) 及 WebGL (Emscripten)
  • 支持Windows(所有主要版本),Linux, Mac OSX, Android, iOS, Windows Phone 及 WinRT 系统
  • 塔建在不同的编译器如:MSVC,、GCC 3+ 或 Clang

材质/着色支持

  • 强大的材质声明语言允许你重要的材质系统在代码之外
  • 支持顶点和片段程序(着色器),都用低级别汇编语言编写的程序及高级编程cg编写,DirectX9 HLSL, 或 GLSL 及对于很多常用的常量如世界矩阵,光状态信息,空间对象的眼位置等自动提供支持
  • 支持完整范围的固定功能,如纹理和多通路混合,纹理坐标生成和修改,独立色彩及为了非可编程的硬或者成本更低材质的的alpha操作
  • 如果需要最接近的’N’灯,则多pass效果及pass迭代
  • 支持更多的材质技术,意味着你可以设计替代效果,为了在多样的卡片和ogre自动支持最好的
  • 支持LOD材质,作为对象使用可以获得更低的开销在使用LOD材质
  • 加载纹理从 PNG, JPEG, TGA, BMP 或 DDS,包括不常用的格式如:1D纹理,体纹理,立方贴图和压缩纹理
  • 纹理可被提供和通过插件实时更新,如:视频反馈
  • 支持易于使用的投影纹理

网格

  • 接受灵活的网格数据格式,顶点缓冲器概念分离,索引缓冲,顶点声明和缓冲区映射
  • 二次贝塞尔曲面
  • 渐进式网格(LOD),手动,或自动
  • 批静态几何图形

动画

  • 支持先进的骨骼动画
    • 多个可变重动画的混合
    • 可变/多骨骼动画蒙皮
    • 软件和硬件加速与管道缓冲智能共享的蒙皮
    • 手动骨骼控制
    • 可配置插补方式,精确度和速度
  • 支持灵活的形态动画
    • 变形动画的传统应用程序在你想希望的简单线性混合在外形快照之间
    • 形象的现代造型动画,在变化的时间线上让你融入更多的形象动画,的比如说话的口型进行的面部动画
    • 两种技术的都可用硬件和软件实现,取决你的硬件支持的支持
  • 动的SceneNodes摄像机路径,采样插值动画在需要的地方的类似的技术
  • 可接受的插拔对象适配器的通用动画轨迹,使你赋予任何随着时间推移的对象的任何参数

场景特点

  • 不依赖于任何单一的场景类型,高度可定制的,灵活的场景管理。使用预定义的类进行场景组织,如果他们适应或插入您自己的子类来获得完全控制场景组织
  • 几个示例的插件演示多种方式处理特定类型布局(如BSP,八叉树)
  • 分层场景图;节点允许对象被连接到彼此及跟随对方的运动和链接结构等
  • 多重阴影渲染技术,无论经过调节和添加技术,模版和纹理为基础,每个高度可配置和充分利用任何可用硬文件加速
  • 场景查询功能

特殊效果

  • 合成系统,允许在全屏后处理效果,如需定义通过脚本
  • 粒子系统,包括易扩展发射器,影响器和渲染器(通过自定义插件)。系统可以通过文本脚本轻松调整来定义。自动使用粒子池的最大性能
  • 支持非常容易使用的kyboxes, skyplanes 及skydomes
  • 公告板精灵
  • 带状痕迹
  • 自动管理透明对象(渲染顺序及深度缓冲器设置)

其他特点

  • 内存资源过来和通过文件加载(ZIP,PK3)
  • 灵活的插件架构允许引擎不需要重新编译
  • ‘Controllers’易于你组织对象派生如改变船的左上盾牌颜色
  • 定位内存泄漏的内存调试管理器
  • 高效的二进制XML格式/接口交互和编辑
  • 示例库browser 展示了许多功能

Vs2013编译Ogre2.0

本文用vs2013对ogre2.0进去编译。ogre2.0目前只是一个开发中的版本,如果需要稳定版本就请下载1.9http://www.ogre3d.org/download/sdk的版本吧。推荐2.1,OGRE2.1更新频率大,2.0就是一个过渡。

本机环境:

windows7 x64

工具安装说明:

分别安装

  1. 跨平台的安装(编译)工具cmake:www.cmake.org
  2. 分布式的源码管理工具tortoisehg:http://tortoisehg.bitbucket.org/
  3. 微软提供给软件开发者开发库DirectX SDK:http://www.microsoft.com/en-us/download/details.aspx?id=6812
  4. 美国微软公司的开发工具visual studio 2013 http://www.visualstudio.com/en-us/downloads
  5. 依赖库vs2013 vs2015库http://pan.baidu.com/s/1pKaFQJp

使用tortoisehg下载源代码:

  1. 下载Dependencies源代码,在D盘建立sdk目录,现在你在d:sdk目录下。右键鼠标看到tortoisehg 选择 clone克隆 在Soucre填入 https://bitbucket.org/cabalistic/ogredeps 然后点击下面的clone 等待 下载完成。
    上图
    ogredeps
  2. 下载ogre2.0的源代码,同样的操作d:sdk目录右键tortoisehg 选择 clone克隆 在Soucre填入https://bitbucket.org/sinbad/ogre 然后点击下面的clone ,记得还需要进入下载好的ogre2.0的源代码目录右键tortoisehg 选择 update 选择v2-0。
    图2
    update 2.0

使用cmake配置并编译Dependencies及Ogre2.0源代码:

  1. Dependencies:我们来打开CMake (cmake-gui),手动拉Dependencies源代码目录下CMakeLists.txt到cmake窗口。点击configur按钮,选择visual studio 12 ,点击finish完成。点击generate生成解决方案。在目录下你就会看到OGREDEPS.sln,vs2013打开编译INSTALL的项目。完成后有目录ogredeps 改名Dependencies 拷贝到ogre2.0源代码的目录。
  2. Ogre2.0:现在拉ogre2.0源代码目录下CMakeLists.txt到cmake窗口,同cmake配置Dependencies操作一样,产生OGRE.sln。设置SampleBrowser为启动项目编译。
    上图
    cmake ogre
  3. 错误:’unistd.h’: No such file or directory
    头文件unistd.h是Linux/Unix的系统调用,包含了许多UNIX系统服务函数原型,如open、read、write、_exit、getpid等函数。在linux下能够编译通过的包含此头文件的程序,在VC下编译时出现了如下问题
    fatal error C1083: Cannot open include file: ‘unistd.h’: No such file or directory
    其实解决这个问题的方法并不难,只要在你的默认库文件夹下(我的电脑是D:Program Files (x86)Microsoft Visual Studio 12.0VCinclude)添加一个unistd.h文件即可,其内容如下:

    #ifndef _UNISTD_H
    #define _UNISTD_H
    #include <io.h>
    #include <process.h>
    #endif /* _UNISTD_H */
    

    参考来源:http://weilihero.blog.163.com/blog/static/13411039520109218831848

更新代码仓库:

在过段时间后,作者更新了代码库,我们同步下,在源代码目录下右击,然后点Sychronize,再点

hg-update
OGRE2.1版本说明:

update2.1的版本源代码,图2

cmake只勾选Samples2

总结:

发现了没有ogre2.0确实编译不是很难,而且编译1.10的版本也没有问题。还不需要boost的库。ogre2.0确实提出很久了,框架大修改,据OGRE2.0的群友林公子说“渲染相对上1.X版本的性能升了3倍”。ogre2.1的也可以用上面的方法编译!

运行提示错误,直接按OK OK OK ……毕竟是不稳定版本。

运行截图

ogre2.0