第50章 进度飆升(2/2)
不过在系统buff的加成下,这些难题困扰不了多久,基本上都会解决。
这天晚上,为了解决一个关於图形层与硬体加速驱动协同工作的难题,三人又爭论了起来。
“我觉得应该把硬体加速的调用封装得更底层一些,让上层应用无感知,这样兼容性最好。”刘健坚持道。
“但这样会损失性能!很多应用场景需要直接控制硬体加速来达到极致流畅度!”李悦反驳。
赵成皱著眉头,试图调和:“能不能设计成两种模式?一种自动兼容,一种高性能模式由应用选择?”
就在这时,一直在旁边默默听著的许乐,看著白板上纠缠的线条,忽然开口道:“其实我们可以借鑑一下微內核架构的思想。”
他走到白板前,擦掉一部分,重新画了起来:“我们把最核心的、与硬体直接交互的图形驱动和加速管理,做成一个独立的、高优先级的系统服务。然后,设计一套高效的消息传递机制。窗口管理器和应用,通过发送消息来请求图形操作。这个系统服务接收到消息后,统一调度硬体资源来执行。”
他详细解释道:“这样做,既保证了硬体访问的安全性和统一调度,又能通过优化消息传递机制来保证性能。上层应用感觉像是在直接调用,但实际上是通过高效的消息中间层。我们可以把这个消息机製做得足够快,快到底层差异可以忽略不计。”
赵成眼睛一亮:“对啊!这样既隔离了差异,保证了稳定和安全,又通过优化通信机制保证了性能!这个思路好!”
刘健也恍然大悟:“把复杂的硬体差异隱藏在系统服务內部,对外提供既统一又高效的接口,妙啊。”
李悦兴奋地开始在白板上补充细节:“消息格式可以这样设计……传递机制可以用共享內存加信號量……”
图形子系统最核心的架构难题,在许乐的引导下,找到了適合的解决方案。
攻坚小组立刻投入到了紧张的编码实现中。
与此同时,游戏项目组也在全力衝刺游戏demo。
有了资金支持,黄瑾瑾做的第一件事,就是购买更多专业设备,提升项目的效率。
这让美术组的同学们如虎添翼,建模和贴图的效率与质量进一步提升。
阿斌负责的“共工”祖巫模型,已经完成了高精度建模和骨骼绑定,正在调试攻击和技能释放的动画。
那肌肉虬结、充满力量感的动作,配合著临时加上去的水流粒子特效,已经初具震撼力。
另一个英雄“琼霄仙子”的模型也接近完成,衣袂飘飘,动作灵动,剑诀手势栩栩如生。
策划莉莉则带领著策划组,和程序组的同学紧密配合,开始將设计好的英雄技能、属性、装备数据,录入到正在二次开发的游戏引擎中,並搭建第一个小型对战地图“不周山遗蹟试炼场”。
然而,他们也遇到了麻烦。
负责客户端核心逻辑的程式设计师发现,当同时渲染多个带复杂特效的英雄模型时,帧率会急剧下降,明显卡顿。
“不行啊,帆哥!”程式设计师向兼任引擎技术顾问的杨帆求助,“这特效一多,draw call(绘製调用)太高了,cpu提交指令都忙不过来,gpu再强也白搭。”
杨帆过来看了一下性能分析工具,皱起了眉头:“確实是draw call瓶颈。我们用的这个开源引擎,在批量渲染和合批处理上优化得不够好。”
黄瑾瑾也急了:“那怎么办?总不能把特效都砍了吧?那洪荒战斗的史诗感就没了!”