分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
关于 OGRE 与 OSG 的简单比较
1 前言
我曾经细致阅读过 OGRE 和 OSG 官方提供的文档,有《Pro OGRE 3D Programming》、OGRE自带手册(manual)、王锐老师等翻译的《OpenSceneGraph Quick Guide》,同时在网络上查阅了大量的 OGRE 架构源码分析的文章。简单使用过 OSG,对 OSG 的场景管理器设计和编程风格有所了解,而在近期的项目中大量使用 OGRE,相对于 OSG,对 OGRE 的认识比较深刻一些。目前 OGRE 的最新版本是 1.7,OSG 的最新版本是 2.9.7。
本文是对 OGRE 和 OSG 这两大三维图形绘制引擎的一个不全面的个人比较,主要简单介绍它们在运行效率、平台支持、资源管理、场景树管理、功能支持、可扩展性、易用性和相关支持方面的异同,而不是评论谁优谁劣(当然本人也没这资历),通过了解差异后,根
据不同项目要求做出不同选择。
因为本人使用这两个绘制引擎的时间不长、运用的功能特性也不全,所以有些比较结论可能不合理,欢迎指正,通过交流,共同进步。
2 绘制引擎简介
2.1 OGRE
OGRE 是 Object-Oriented Graphics Rendering Engine(面向对象的图形绘制引擎)的简称,是一个用 C++开发的面向对象且使用灵活的 3D 引擎,是一个被广泛使用的开源三维图形渲染库。它成功地被应用于诸多三维仿真领域,其中包括网络游戏和一些商业的三维仿真项目。
它的目的是让开发者能更方便和直接地开发基于 3D 硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D 和 OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。OGRE 的主要特性有:
效率特性
简单、易用的面向对象接口设计使你能更容易地渲染 3D 场景,并使你的实现产品独立于渲染 API(如 Direct3D、OpenGL、Glide 等等)。
可扩展的程序框架(framework)使你能更快的编写出更好的程序。
为了节省你的宝贵时间,OGRE 会自动处理常见的需求,如渲染状态管理,空间裁剪,半透物体排序等等。
清晰、整洁的设计加上全面的文档支持。
在很多商业产品(特别是电子游戏)上得到应用,并被证实是一个稳定的引擎。
平台和 3D API 支持
支持 Direct3D 和 OpenGL。
多平台支持,支持 Windows(所有版本)、Linux 和 Mac OSX。
在 Windows 平台上可以使用 Visual C++或 Code::Blocks 编译。
在 Linux 平台和 Mac OSX 平台(使用 XCode)上可以使用 gcc 3+编译。
材质、Shader 支持
强大的材质声明语言使你可以在代码之外维护材质资源。
支持顶点和像素着色器(Shader),同时支持低级的汇编着色器和高级的着色器,如Cg、D3D 中的 HLSL 和 GLSL,并为许多常用的常量提供自动的绑定的,如世界视点矩阵、光照状态、视点世界坐标等。
支持固定渲染管线的全部功能,如多纹理、多遍绘制融合、纹理坐标生成和修改、为低端的不可编程显卡提供独立的颜色融合操作。
支持多个材质技术,你可以设计不同显卡配置的不同技术,OGRE 自动选择最佳的技术。
支持材质的 LOD;你的材质可以在它们远离视点时减少资源消耗。
支持从 PNG、JPEG、TGA、BMP 或 DDS 等文件中加载纹理;支持不常见的 1D 纹理、立体纹理、立体盒纹理和压缩纹理(DXT、S3TC)。
可以通过插件实时提供及更新纹理,如从视频上。
支持透射纹理映射(Projective Texturing)。
网格 Meshes
灵活的网格数据格式支持,独立于顶点缓存、序号缓存、顶点声明和缓存映射。
支持渐进的网格 LOD,可以自动或手动生成。
支持用 Bézie