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

Unity对于开发者来说是一个黑盒子,开发者只需掌握引擎提供的脚本语言,能够熟练运用就可以了,这导致了现在很多程序员对于C++编程或者说对于引擎只会一些表面的东西,深入的一概不知。久而久之,你就只是一个脚本程序员,你能做的事情别人也能做,对于公司来说你就属于可有可无的,薪资方面不会有大的长进,随时可以被替代,而且对于个人发展也是不利的。为了自己的前途着想还是要学点引擎底层的技术,其实学习引擎对于写逻辑的帮助还是非常大的。因为你了解了引擎底层的原理,在优化方面会助你一臂之力,总之,我们还是要学习引擎技术的。
前面给读者介绍了引擎库,本篇博客我们需要将我们介绍的引擎库编译成静态库,将它们放到引擎中便于接口的调用。我们最终得到的是将所有的库整合到一个工程里面编译,效果图如下所示:
手把手教你架构3D引擎高级篇系列三_第1张图片

移植BGFX渲染引擎

先看看BGFX图形渲染库,我们要做的事情是把BGFX作为图形渲染库移植到我们的引擎中,先把BGFX的头文件放到工程里面,包含内容:
手把手教你架构3D引擎高级篇系列三_第2张图片
再把源文件cpp放到工程里面,对应的目录如下所示:
手把手教你架构3D引擎高级篇系列三_第3张图片
将头文件和源文件放到工程中的效果图如下所示:
手把手教你架构3D引擎高级篇系列三_第4张图片

我们还需要移植两个库文件到我们的引擎中,bx库文件,下载地址:https://github.com/bkaradzic/bx
手把手教你架构3D引擎高级篇系列三_第5张图片
将上图中红框的部分移植到引擎中,效果图如下所示:
手把手教你架构3D引擎高级篇系列三_第6张图片
再将bimg库,一个图像库移植到引擎中,下载地址:https://github.com/bkaradzic/bimg
效果如下所示:
手把手教你架构3D引擎高级篇系列三_第7张图片
这样我们的BGFX就完全移植到了引擎中,工程如下所示:
手把手教你架构3D引擎高级篇系列三_第8张图片
我们的工程是静态库lib,这里面需要设置如下所示:
手把手教你架构3D引擎高级篇系列三_第9张图片

cmft

BGFX引擎移植完毕,接下来移植cmft一个生成cubemap的库,网址:
https://github.com/dariomanesku/cmft
在这里给读者展示移植的过程,我们在使用别人的库时如何移植的,只把关键的地方拿过来使用,如下图所示:
手把手教你架构3D引擎高级篇系列三_第10张图片
在工程中的效果图如下所示:
手把手教你架构3D引擎高级篇系列三_第11张图片
该工程也是静态库lib,我们同样需对其进行设置:
手把手教你架构3D引擎高级篇系列三_第12张图片

crunch

crunch是一个图片压缩的库,下载地址:
https://github.com/BinomialLLC/crunch
我们将crunch移植到工程中,我们只需要将下图中的代码移植到工程库中:
手把手教你架构3D引擎高级篇系列三_第13张图片
同样它也是lib静态库,这里就不用 对上面进行设置了。

lua

lua作为脚本语言被各大公司使用,这也让它名声大噪,作为程序员开发,掌握一门脚本语言也是必备的,代码下载地址:https://github.com/LuaDist/lua
同样我们也需要把代码移植到引擎中,将下面标注红框的代码移植到工程中即可。
手把手教你架构3D引擎高级篇系列三_第14张图片
在工程中的效果如下所示:
手把手教你架构3D引擎高级篇系列三_第15张图片

该工程也不需要额外的设置,但是要将其设置成lib静态库。

recast

再将Recast一个Navmesh库文件移植到引擎中,NavMesh库的下载地址:
https://github.com/recastnavigation/recastnavigation

同样需要将其代码移植到工程项目中,移植时将下图中标注红框的代码移植到引擎中。
手把手教你架构3D引擎高级篇系列三_第16张图片
在工程中的示意图如下所示:
手把手教你架构3D引擎高级篇系列三_第17张图片
该工程同样需要设置成lib静态库,这个需要设置一下,如下图所示:
手把手教你架构3D引擎高级篇系列三_第18张图片

SDL

SDL库是一个输入,输出库,下载地址:https://www.libsdl.org/download-2.0.php
这个将其代码直接移植到项目中即可。
在工程中的效果图如下所示:
手把手教你架构3D引擎高级篇系列三_第19张图片
该库也是静态库lib,同样需要设置一下:
手把手教你架构3D引擎高级篇系列三_第20张图片

Shaderc

在这里还需要注意一个问题,就是关于Shader的编译,大家知道我们写的Shader脚本在引擎中需要解释的,我们在移植BGFX时,没有将这部分移植进来,所以我们还要返回到BGFX库中,它的代码里偶第三方库代码,也需要将其移植到项目工程中,看下图所示的:
手把手教你架构3D引擎高级篇系列三_第21张图片
除了将其设置成静态库lib外,我们同样需要对工程进行设置,如下图所示:
手把手教你架构3D引擎高级篇系列三_第22张图片
手把手教你架构3D引擎高级篇系列三_第23张图片
在项目工程中显示如下所示:
手把手教你架构3D引擎高级篇系列三_第24张图片

整个第三方库完成移植完成后,我们将其编译成lib静态库lib,编译完成后,我们会文件得到lib静态库文件,如下所示:
手把手教你架构3D引擎高级篇系列三_第25张图片

总结

第三方的库编译是很重要的,开发者必须要掌握的,这也我们后续开发做好准备,后续我会把代码库整理发布出来。

你可能感兴趣的:(3D引擎)