阅读一款3D引擎的方法备忘

转载 2015年07月10日 09:53:31

要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.


首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.
然后带着如下每一个问题(不分先后)去走流程,走逻辑,弄清引擎的业务处理方法.


1.SetStreamSource,SetIndices,DrawIndexedPrimitive的调用是在哪里(哪个cpp哪个类的哪个函数),整个工程有几个DrawIndexedPrimitve,DrawPrimitveUp,DrawXXX,被统一管理了吗,还是零零散散地分布在各个cpp各个类?


2.纹理资源是如何管理的?句柄,ID,指针? 按使用时间,按使用计数? 模型顶点资源是如何管理的,是否有Buffer分配上的优化(比如顶点缓冲整合)? 渲染的实例数据如何管理,如何与资源概念区分的? 纯3D资源如Shader/RenderTarget是如何管理的?


3.场景管理是怎样搭建的,如何包含区分节点实例数据和资源数据?镜头是如何被各模块访问的?剔除不可见物件的代码行在哪里?兼容各种算法吗,使用了具体的算法是什么?不论使用何种算法,场景管理模块是否提供了清晰的需求定义接口?


4.骨骼动画是在哪里计算的,具体到顶点乘以矩阵是在哪个cpp的哪个代码行里?Socket实现在哪里?如果有高级动画系统,骨架在哪里,有什么功能?动作融合的矩阵间过渡代码在哪一行?


5.异步数据加载是怎样做的,在哪个cpp里,由哪个模块管理?各个资源的加载读取cpp代码行在哪里?


6.渲染管线如何为ShadowMap提供深度图,如何为CubeMap,水面反射提供场景RenderTarget?如何管理固定流水线状态RasterState的?


7.材质管理系统是如何运作的(通常都是technique + multipass),如何并入管线的,如何从理论上保证可以实现各式各样的效果的?如何抽象兼容固定和可编程流水线的? 如果是抽象管理的,如何抽象掉不同的technique下的不同的数据?管线里是否有独立的后期效果,还是用材质表达出来?材质是否可以脚本化?材质是要分组的,排序的代码段在哪个cpp的哪里?


8.特效如粒子系统到最后是使用哪个DrawXXX画出来的? 粒子系统是动态公式计算(不要理会具体公式)还是帧动画?


9.界面2D Texture Draw是如何被支持的?文字渲染是如何被支持的,特别是如何支持中文的,字体资源如何被管理?是否使用Freetype,是否支持东亚文字?


10.物理系统的接口是如何定义引擎的需求的?或者就是乱糟糟地直接用上.

Unity Shader-Command Buffer的使用(景深与描边效果重置版)

Command Buffer是Unity5新增的一个灰常灰常强大的功能。先祭出官方介绍和文档。我们在渲染的时候,给OpenGL或者DX的就是一系列的指令,比如glDrawElement,glClear...

深入浅出聊优化:从Draw Calls到GC

原文地址:http://www.cnblogs.com/murongxiaopifu/p/4284988.html 前言: 刚开始写这篇文章的时候选了一个很土的题目。。。《Unity3...

阅读一款3D引擎的方法备忘

转自:http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html 要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现...

阅读一款3D引擎的方法备忘

要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题. 首先,最重要的必须,在Debug模式下调试起来一个主场景程...

[转]阅读一款3D引擎的方法备忘

链接:http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html 要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着...
  • arundev
  • arundev
  • 2012年06月24日 20:01
  • 290

阅读一款3D引擎的方法备忘

n久没更新了,转一篇文章(http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html) 要带着引擎系统所共有的问题去阅读,不要被...

阅读一款3D引擎的方法备忘

转载自: http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html 要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路...

阅读一款3D引擎的方法备忘

要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题. 首先,最重要的必须,在Debug模式下调试起来一个主场景程...

阅读一款3D引擎的方法备忘

阅读一款3D引擎的方法备忘 要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题. 首先,最重要的必须,在Deb...

《阅读一款3D引擎的方法备忘》

要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题. 首先,最重要的必须,在Debug模式下调试起来一个主场景程序,...
  • claien
  • claien
  • 2012年12月02日 14:26
  • 281
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:阅读一款3D引擎的方法备忘
举报原因:
原因补充:

(最多只允许输入30个字)