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

标签: Game Engine 转载 | 发表时间:2011-08-31 08:54 | 作者:flyingpig Zen_Yue
出处:http://yamcot.com

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

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

        首先,最重要的必须,在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.物理系统的接口是如何定义引擎的需求的?或者就是乱糟糟地直接用上.

.原文地址

相关 [阅读 3d 引擎] 推荐:

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

- Zen_Yue - Flyingpig
        要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.         首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.

Mozilla开发Gladius 3D游戏引擎

- SotongDJ - Solidot
Mozilla正在开发名为Gladius的3D游戏引擎,它是Paladin项目的一部分,旨在将3D游戏引入Web. Mozilla已经开发了首个原型游戏RescueFox(工作在最新版Firefox),演示Gladius确能用于创建浏览器3D游戏. Mozilla开发者表示无意进一步开发RescueFox,但会继续开发其它3D游戏演示Gladius的进步.

2D和3D游戏引擎 Godot 宣布开源

- - ITeye资讯频道
近日, 一款名为Godot的全新开发的,功能非常全面的游戏引擎在MIT许可下开源,其代码业已托管到GitHub上. 据其开发工作室OkamStudio介绍,Godot是由Juan Linietsky和Ariel Manzur开发的一款in-house引擎,可用于PC、移动、主机及Web游戏开发,其功能集类似Unity,拥有着功能非常丰富的编辑器、语言及API,却也简单易用.

【译文】Top 10:HTML5、JavaScript 3D游戏引擎和框架

- - 淡忘~浅思
由于很多人都在用JavaScript、HTML5和WebGL技术创建基于浏览器的3D游戏,所有JavaScript 3D游戏引擎是一个人们主题. 基于浏览器的游戏最棒的地方是平台独立,它们能在iOS、Android、Windows或其他任何平台上运行. 有很多的JavaScript能够用于创建基于浏览器、使用HTML5和WebGL的3D游戏.

3D book – 炫酷 TXT 电子书阅读器 | 小众软件 > 桌面工具

- D_u - 小众软件
羡慕 iBook 看书时的效果吗. 3D Book 可以将你的 TXT 电子书变立体,阅读时具有翻页、旋转等效果,看起来就像在看一本真实的书. 3D Book 在第一次打开文件时会生成索引,之后的打开速度会非常快,另外还有一个类似收藏夹的书架功能,可以保存常看的书籍,也很实用. 根据软件说明,软件采用了 OpenGL ,因此请更新下显卡驱动,另外,软件官网关闭了(确实是关闭,不是和谐),请到网盘下载.

移动阅读与阅读

- - 扯氮集--上海魏武挥的博客 - 扯氮集--上海魏武挥的博客
近日,由中国新闻出版研究院组织实施的第十次全国国民阅读调查显示,国民在数字阅读这个维度上的比例有所上升,从11年的38.6%小幅增加到12年的40.3%,而电子书阅读,更是有比较可观的增幅,从11年的人均1.42本到12年的2.35本. 另外一个消息是,搜狐移动设备上的新闻客户端,累计下载安装量已经破亿.

LG 推出世界首个用于智能手机的游戏 2D 转 3D 引擎

- Kidwind - 谷安——谷奥Android专题站
LG 将在柏林的 IFA 2011 上展出一个很酷的游戏转换引擎. 这个引擎据说是世界首个用于智能手机的 3D 游戏转换引擎. 该转换引擎基于 OpenGL 的 2D 转 3D 技术. 这个引擎是据称是 LG 为扩大 3D 产品以及 3D 内容所做的努力之一,该引擎将可以在他们的 3D 产品上使用比如 Optimus 3D.

伪阅读

- coen - 情书
    在一次百老汇大街边的午餐交谈中,关于阅读,我和我的荷兰同事达成一个共识:学术生涯实际上是一个摧毁阅读的过程.    从道理上来说,怎么会呢. 从事学术工作,尤其是社会科学的学术工作,我们最有条件进行大量阅读了.     但事实是,学术工作从以下几方面摧毁了阅读及其乐趣:第一,为了“研究”需要,你的阅读范围一般都非常狭窄.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

mysql 引擎优化

- - CSDN博客推荐文章
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的. 要添加一个新的引擎,就必须重新编译MYSQL. 在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP. 另外两种类型INNODB和BERKLEY(BDB),也常常可以使用. 如果技术高超,还可以使用MySQL++ API自己做一个引擎.