doom3技术分析

前言

2011年11月doom3代码发布

2012年11月doom3 BFG代码发布

两个游戏内容虽然相差不多,但doom3 BFG版本在技术上有很大进化(多线程框架,SWF,立体渲染)。本文技术分析主要基于doom3BFG版本

架构


idCommon是总控制类

绿色的是子系统,可以在各处调用。

Entity是基于继承的结构

多线程渲染

整体分为两个线程,主线程(BackEnd)和Game线程(FrontEnd)。主线程负责获取输入,处理网络消息,调用渲染API,以及调度Game线程。Game线程主要运行游戏逻辑以及生成RenderCommandBuffer。据说这个架构在doom3的版本里就已经实现了,但当时两个线程是反过来的,主线程生成RenderCommandBuffer,子线程调用渲染API,(FrontEnd和BackEnd的名字可能就是从那时候来的),但实现后不知道为什么在某些机器上运行不稳定。因此doom3在在发布的最后时刻又改成了单线程实现。直到后来才发现OpenGL API非创建Device的线程上被调用时,在某些平台上会有问题,但所有文档上都没提过这事儿。(看来卡马克也是被各种坑啊)

主线程:

获取用户输入

接收和发送网络消息

交换RenderCommandBuffer

启动Game线程

渲染上一帧RenderCommandBuffer中的内容

 

Game线程:

运行一到多个逻辑帧

生成本帧的RenderCommandBuffer

说明:

1&#

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值