
上传视频封面
首先作为第一步,我们导入材质的基本参数。我们需要进一步完善我们在从零开始手敲次世代游戏引擎(二十九)所写的SceneNode,SceneObject的结构,导入包括材质的基本颜色(diffuseColor),高光颜色(SpecularColor)和高光系数(SpecularPower)等颜色/参数。然后我们需要修改我们的GraphicsManager(在这里我们暂时只实现了OpenGLGraphicsManager),让它能够将这些材质参数传递给我们的Fragment Shader。最后是修改我们的Shader,将我们之前写死在Shader里面的材质参数,替换成uniform类型的变量。
下面是所有这些变更的代码:
变更之后的效果如下:

上传视频封面
可以看到一部分材质已经应用上去了。最为明显的就是面部、手、脚这些裸露的部分。
至于衣裙以及?,这些是使用的基于贴图的材质。主要是这两种:


可能是因为我所使用的OGEX导出脚本与Blender的版本不匹配的问题,导出的aili.ogex文件当中并没有到贴图的链接。不过OGEX文件是文本文件,很容易编辑。我们可以手动加上去:
同时检查模型的UV坐标(也就是贴图坐标)已经正确的导出了:

接下来我们需要将贴图通过图形API接口从CPU传递到GPU,并且修改我们的Shader以及初始化Shader的代码,将UV坐标正确地传递给GPU。相关的代码在:
这样我们就完成了一个基本的贴图导出和加载的过程。最后的效果在本文开篇已经展示了。
接下来讲一些工程方面的事情。
我们现在代码已经有了一定的规模,而且支持多个平台,不同的RHI(图形渲染API)。在这样的情况下,每次对代码进行了变更,是应该在各个平台进行测试的。
这个过程十分重要,但是如果手动操作会十分的耗费时间,并且单调乏味。
事实上,行业当中一般采用“连续集成”(CI = Continues Integration)来对应这个需求。大一点的软件公司都会有专门的人/部门负责这部分工作。
所谓CI,就是指使用一套自动化流水线工具,当代码发生更新的时候,自动的按照既定的步骤对代码进行编译、测试、分发的过程。
我们的代码托管在GitHub上面,GitHub提供了CircleCI的集成,并为开源项目提供了免费的配额。开通了CircleCI的集成之后,通过十分简单的配置,CircleCI就会对我们每一个提交进行自动化编译与测试,并将结果显示在GitHub当中,如下图这样:

画面当中绿色的勾就是CircleCI添加上去的测试结果。上面是按照branch进行显示的,我们还可以按照commit进行显示:

CircleCI不仅支持Linux版本的CI,也支持macOS版本的CI。不过macOS版本的服务缺省是不免费提供的。目前我正在和CircleCI协商是否可以获得相关免费资源。
设置CircleCI的方法很简单。点击下面这个链接,然后按照页面提示进行就可以了。
对于诸如Android/iPhone等标准开发流程(就是使用IDE进行开发的项目),CircleCI可以自动检测出项目编译和测试的方法。对于像我们这样的深度自定义产品,需要在项目文件夹里面新建一个目录和文件,描述我们项目的编译和测试方法:
.circleci/config.yml
参考引用