手把手教你架构3D引擎高级篇系列二

系列一给读者介绍了我们查阅的相关资料,下面我们需要选择引擎的渲染库了,在这里先谈谈我对引擎的学习:
这里写图片描述
上图是我做项目用过的或者说自学所用到的引擎,我刚开始接触引擎是在读研究生的时候,是实验室自研的引擎,是为项目开发定制的,功能现在来说是比较陋的,后来我先接触的是Ogre引擎,利用它也做过一些小Demo,进入公司后,使用的是公司自研引擎开发的项目,再后来接触鬼火引擎,这款引擎代码编写简单,新手学起来比较容易。Cocos2d-x大家都知道它是一款开源的2D引擎,我还为Cocos2d-x的3D版本写过一本书《Cocos2dx 3.x 图形学渲染技术讲解》,以上几款都是开源的引擎,从事项目开发用的都是商业引擎从Torque引擎开发AR产品到使用GameBryo,CryEngine,Unreal,到现在用的比较多的Unity引擎,涉猎的比较多。熟话说,熟读唐诗三百首,不会作诗也会吟。学习代码编程跟这个原理是一样的,用的多了自然而然想自己搞一款出来。
做一款引擎我们会用到第三方的库,在这里我把我们需要的库通过图示的方式列出来,后面我们逐步给读者介绍。
这里写图片描述

BGFX

引擎编写首先要把渲染库搞定,一种是自己写,另一种是选择开源的,综合考虑还是选择了后者,也就是选择了BGFX图形库,选开源的图形库本着一个原则:
1、有开源的代码
2、代码一直更新
3、跨平台
以上三项是必备的,编写引擎会选择很多库的,因为好的成熟的东西,我们可以直接拿过来用的,我们不能什么模块都去自己编写,那样效果并不一定好。下面我们就先围绕着BGFX图形库给读者介绍,因为我们需要将其移植到我们的引擎中,所以要对它做一个详细的了解。
首先我们看一下GBFX的源码地址:https://github.com/bkaradzic/bgfx
看一下它能为我们做的事情:
这里写图片描述
上图是从BGFX文档中看到的,网址:https://bkaradzic.github.io/bgfx/overview.html
文档中不仅列出了支持的图形API,支持的平台,还有编译工具。。。。。。
这个也是作为我们考察渲染引擎的一个指标,下面就是要熟悉BGFX了,在文档中有个Build项用于代码的编译,按照步骤就可以实现出来。如果大家还不会,这里有篇博客教程:
https://blog.csdn.net/huangzhipeng/article/details/54672949

编译通过后,我们下面要做的事情是熟悉BGFX,通过它提供的Demo,我们可以把它的执行顺序理顺,再通过函数的调用深入底层查看函数的实现,逐步深入。。。。。。

Lua

Lua作为脚本语言最常用,它的源码下载地址:https://github.com/LuaDist/lua
我们的引擎也将使用Lua作为脚本语言,当然也可以使用C#,类似Unity开发。

crunch

Unity引擎为图片压缩提供了针对不同平台的压缩方式,这样可以减少包体的大小,我们开发引擎也要考虑这方面的需求,所以我们采用了Crunch提供的压缩方案,源码地址:
https://github.com/BinomialLLC/crunch
使用它提供的接口,还可以生成对应的Mipmap贴图。

recast/detour

recast这个工具主要的功能是做网格导航的,跟Unity的NavMesh功能类似。它可以在任何网格上面生成导航网格,而且生成效率很高的,最重要的一点,它是开源的,因此它带有完整的源代码,我们可以根据自己的内容进行自定义。
Detour提供简单的静态网格导航,适用于许多简单的情况,比如平铺导航网格。源代码下载地址:
https://github.com/recastnavigation/recastnavigation
该工具生成导航网格效果图如下所示:
这里写图片描述

SDL

SDL是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的访问,引擎要提供键盘的输入输出,SDL它不依赖于OpenGL和DirectX,适用于引擎开发。
源代码下载地址:http://libsdl.org/download-2.0.php

cmft

cmft 全称是cubemap filtering tool,用于之最CubeMap,可以制作天空盒,实现效果如下所示:
这里写图片描述

而且cmft还有自己的编辑器工具如下所示:
这里写图片描述

源代码下载地址:https://github.com/dariomanesku/cmft

总结

选择以上的库作为第三方开发库,并不是随意选择的,而是多年使用的经验积累,这些库相对来说使用的比较多,经过上线产品的验证。我这里只是简单的介绍了一下,读者还是需要将其编译调试一下,至少把它的执行流程整明白。

已标记关键词 清除标记
相关推荐
3D游戏引擎编程-3D.Game.Engine.Programming.pdf,作者:Stefan Zerbst & Oliver Duvel,本书是英文版,大小 271 MB,被压缩成两部分分别上传。这是第一部分,第部分下载地址:http://download.csdn.net/source/2697012。 IT业中游戏业最吃香?为什么呢?大家说有多少网民没有玩过游戏?不过中国游戏人才也是缺啊!看看盛大为了招收人才自己到各个大学去招收计算机本科生啊!中国最大的游戏公司竟然自己去招收人才,可想而知啊!!中国游戏人才到底缺多少!我们缺的不是玩游戏的,而是做游戏的!大家想必都有过要自己做游戏的梦想吧?为什么没有实现呢?因为觉得自己办不到?错!你能办到!从现在开始吧!我们一起将韩国泡菜赶出国门!一起努力实现中国第一个暴雪公司!创造中国自己畅销全世界的游戏!以中国的武侠魅力去震撼世界!我们不要让外国人牵着鼻子走! 我们技术上比不过美国,美工上比不过日本,创意上比不过韩国!我们有什么可以自豪的呢?中国游戏产业的振兴就靠我们这一代,不要让我们的下一代都只玩美国的XBOX,日本的PS,韩国的传奇!我们看到了中国游戏业这块大蛋糕已经让外国瓜分的剩不下多少了!中国的公司为了代理外国的一个游戏争的头破血流!这样的事情不要让他们再一次次重演了! 游戏开发职业虽然含金量较高,但从业门槛也高高在上,因此,学习前一定要先看看自己是否适合这一职业。判断标准主要有以下七点:一看学历,一般需有大专以上的育背景;看年龄,游戏业是年轻人的行业,18-35岁是最佳年龄段;三看逻辑性,从业人员除具备IT基本知识外,还要有相当强的逻辑能力,否则将难以担当复杂的编程工作;四看知识面,游戏软件开发设计编剧、美术、音乐、动画、程序等诸多方面,知识面宽泛;五看创新能力,游戏开发需要经常翻花头,对开发者创新能力的要求较高;六看合作能力,游戏软件开发往往由一个小组负责,需要开发者有团队合作精神;七看兴趣,游戏开发是一项异常枯燥的工作,如果对此没有足够的兴趣,将很难做好。 发布的这些书都是原版的英文书籍,没有中文的,因为中文翻译的慢!大家如果想从事游戏开发,我真的建议大家先学英语,英语是你一切的一切的基础!大家也可以下载一个金山词霸来边翻译边看!
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页