经过前面针对OpenGL的一些特性的学习,越发觉得要学的更多,相关如LOD,各种阴影实现,场景管理如BSP与Octree等以及还没听过的各种的实现.有感自学的进度太慢,并且在做一些小DEMO时,心中不由的想到各种想要的大场景的实现.,故想到直接从3D引擎根据代码学习,然后就开始在各大网站上翻看各种开源引擎,主要是根据如下几条来选择1.开发语言最好是C#,毕竟C#的组织性强,阅读有条理,并且基于面向对象的语言也更适合团队开发.2要有上面如模型,地面的LOD实现,以及相应的场景管理功能,各种阴影的实现.3最好包装的OpenGL的实现,如果OpenGL与D3D都包含就更完美了.4有点名气,可能觉得有点俗,不过主要是因为越有名气,对应的资料会越多,能更好的吸取前辈们的经验.

基于这上面几占,在这个游戏引擎列表里,可以看到可供选择的比较多.其实最开始我选择的是卡马克大神的雷神3引擎以及Ogre的net版MOgre,不过前者主要是基于C语言开发,效率肯定是牛B哄哄的,用来快速学习不好掌握.而MOgre看简介发现,MOGRE (Managed OGRE) is an advanced .NET wrapper for OGRE.这就是说,是在C++上进行的包装,实现还是在对应的Ogre上面(就如OpenTK与OpenGL).然后在那引擎列表里又找了一些并下载试用,终于发现一个名声不显的引擎Axiom,大家可能要说,这不是不满足第4点吗,且看对Axiom的介绍.

The core of Axiom is a port of the very popular OGRE graphics engine, which was chosen based on its clean object-oriented design, powerful features, and flexibilty. The original port was carried out by Leedgitar, the project founder.

看到了没,Axiom是Ogre的net实现版,不同于MOgre,他是把Ogre里的核心代码都用C#来实现的,其中针对OpenGL的包装用的是开源项目OpenTK(后调试好像还是用的Tao框架),也就是我以前Demo用的,并且包含了针对D3D的渲染,用的好像是SharpDX或是SlimDX,MS自己的Managed DirectX已经被MS放弃更新了.前面说了名气其实就是为了学习资源,那Axiom的学习资源多不,不多...果然和我想的一样,名气越多,资源越多.但是架不住有个好爹,Ogre的资料多,资料吻合度可以这样说,在看Axiom的中心源代码时,或是生成,组织,利用如场景,资源等代码,二者的代码几乎一样.这么说,你看用MOgre讲解的Demo,里面的代码几乎就和Axiom的Demo过程一样.

Axiom是LGPL授权,意思可以有条件的商用,并且支持Mono开发.可以用于Windows,Linux,Android,iPhone,Windows Phone,XNA,几乎对主流平台都提供支持.支持各种纹理以及常用的图像格式,支持Cg与HLSL着色器语言,支持顶点/片断着色器.动画支持关键桢动画,骨骼动画,场景管理支持如BSP,Octrees.支持Ogre .mesh 文件格式并可以预加载LOD层次,相关的建模,蒙皮操作.等一系列高级特效.还有非常强大的插件系统.详细介绍请看官网Axiom.

请注意,Axiom的源码存放在 http://svn.axiom3d.net/svnroot/axiomengine/trunk,别的一些开源项目网站多存放的是Axiom的编译后的DLL.

     

3D引擎Axiom的选择与学习.的更多相关文章

  1. 从0开发3D引擎(七):学习Reason语言

    目录 上一篇博文 介绍Reason Reason的优势 如何学习Reason? 介绍Reason的部分知识点 大家好,本文介绍Reason语言以及学习Reason的方法. 上一篇博文 从0开发3D引擎 ...

  2. 从0开发3D引擎(六):函数式反应式编程及其在引擎中的应用

    目录 上一篇博文 介绍函数式反应式编程 函数式反应式编程学习资料 函数式反应式编程的优点与缺点 优点 缺点 异步处理的其它方法 为什么使用Most库 引擎中相关的函数式反应式编程知识点 参考资料 大家 ...

  3. 从0开发3D引擎:目录

    介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.优秀的性能.最小功能集合(MVP)" 的3D引擎. 本系列的素材来 ...

  4. 从0开发3D引擎(补充):介绍领域驱动设计

    我们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程中,领域模型会不断地演化. 本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料. 上一篇博文 从0开发3 ...

  5. Wonder第一期3D引擎和编辑器线下培训班报名开始啦(免费学习)

    Wonder第一次举办 针对3D底层技术的 线下培训班,免费学习,请大家多多支持-感谢- 培训地点 成都 开课时间 报名满5人开课. 报名方式 加QQ群:732861508 备注请写:报名培训 老师介 ...

  6. 关于如何学好游戏3D引擎编程的一些经验[转]

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...

  7. 万圣节福利:红孩儿3D引擎开发课程《3ds max导出插件初步》

    ds max文件夹,插件文件夹以及3ds max的可执行程序文件夹: 位的,这里要改成x64,否则启动程序后3ds max会提示"不是有效的win32程序"之类的对话框. 然后要将 ...

  8. 如何学好游戏3D引擎编程

    注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才 ...

  9. (转)关于如何学好游戏3D引擎编程的一些经验

    此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰 ——阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是 ...

随机推荐

  1. 微信小程序启动过程分析

    1.微信客户端在打开小程序之前,会把整个小程序的代码包下载到本地. 2.紧接着通过 app.json 的 pages 字段就可以知道你当前小程序的所有页面路径: { "pages" ...

  2. Window 分布式 学习2----好文收藏

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  3. Android 支付宝接口调用

    在近期,公司需要开发一个关于在线支付的模块,所以需要用到第三方支付平台 转载请注明出处:http://blog.csdn.net/ht_android/article/details/45307165 ...

  4. CSS实现:标题两侧画线效果

    如图: html代码: <div class="detail-news"> <h5 class="detail-news-title"> ...

  5. hive的UDF读取配置文件

    hive的UDF读取配置文件 实现步骤 在读取配置文件的写为./file_name,然后在添加UDF的时候把配置文件也加入资源就好了: add jar xxx.jar; add file file_n ...

  6. OSSIM架构与组成综述

    OSSIM布道师 李晨光 一.背景 如果运维工程师手里没有高效的管理工具支持,就很难快速处理故障.市面上有很多运维监控工具,例如商业版的 Solarwinds.ManageEngine以及WhatsU ...

  7. 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)

    原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节. 比如说,有一个Person类,有firstN ...

  8. C#学习笔记(11)——深入事件,热水器案例

    说明(2017-6-14 15:04:13): 1. 热水器案例,为了便于理解,采用了蹩脚但直观的英文命名,哼哼. heater类,加热,声明一个委托,定义一个委托事件: using System; ...

  9. J.U.C--locks--AQS分析

    看一下AbstractQueuedSynchronizer(下面简称AQS)的子类就行知道,J.U.C中宣传的封装良好的同步工具类Semaphore.CountDownLatch.ReentrantL ...

  10. Thinkphp在Tpl中调用common.php中的公共函数

    Common/common.php //产生随机验证码 function random($length, $chars = '0123456789') { //随机生成的逻辑 return $hash ...