JefferyZhou

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年9月24日

摘要: 对于游戏开发来说,选好引擎非常关键,而引擎的基础架构以及扩展设计则是决定引擎好坏的关键之关键。在商业项目的开发中,通常我们会投入更多的考虑点到引擎配套工具的完备性和易用性上,其实对于开发人员来说,一套完备易用的工具是建议在一套良好的资源管理框架基础上的,资源管理不仅仅跟工具紧密相关,对于运行时的考虑也是非常重要的。现在很多引擎都提供了资源的热加载,也就是在游戏的运行过程中,动态修改和替换资源,然后... 阅读全文
posted @ 2012-09-24 16:50 JefferyZhou 阅读(1372) 评论(2) 推荐(1) 编辑

摘要: 游戏引擎首先解决的任务就是渲染,N3的渲染架构是一个多线程渲染架构。渲染线程是主线程外的一个线程,主线程操作的是GraphicsEntity , 而渲染渲染线程操作的是InternalGraphicsEntity。这章节想尽可能详尽的解析N3的渲染框架的实做手法和设计理念。同时以编写一个简单的例子为目的,实现场景对象的添加和控制。让一个角色在场景中从A点移动到B点。 渲染系统概述 N3 的渲染... 阅读全文
posted @ 2012-09-24 16:49 JefferyZhou 阅读(1221) 评论(0) 推荐(0) 编辑

摘要: 整个渲染管线N3把它分为从Frame,pass, batch 架构。这个架构要从DX8中废弃掉固定管线开始了解。我们知道在固定管线时代,每次渲染都需要设置好各种渲染状态,比如ZEnable, ZFunc, CullMode, 等,现在DX引入了一个Effect文件用来配置渲染管线,如下: 关于特效文件的说明 参看 [DirectX | Dx effect 文件 .fx 与 Shader - 顶点... 阅读全文
posted @ 2012-09-24 16:47 JefferyZhou 阅读(513) 评论(0) 推荐(1) 编辑

摘要: Shader Model 已经有五个版本了:分别是Shader Model 1.0(DirectX8.0)、Shader Model 2.0(DirectX9.0b)、Shader Model 3.0(DirectX9.0c)、Shader Model 4.0(DirectX10)、Shader Model 4.1(DirectX10.1)和Shader Model 5.0(DirectX11)。... 阅读全文
posted @ 2012-09-24 16:46 JefferyZhou 阅读(706) 评论(0) 推荐(0) 编辑

摘要: 在解析这个系统前,先说明一下, N3 是一个右手坐标系, 如下所示: /** N3, right-handed coordinate system * ^ * y| * | * |_______> x * / * / * /z * v */ 光照系统和阴影系统历来是两个相生相克的的系统。而且内容非常丰富,在渲染系统中,这两个系统也是各个商业引擎争相称赞炫耀的领域。这里只针对N3在这方面的设计做一个... 阅读全文
posted @ 2012-09-24 16:45 JefferyZhou 阅读(331) 评论(0) 推荐(1) 编辑

2010年9月5日

摘要: 1. 用选对 python, 现在pyinstaller 就支持 python2.5 或者 2.5 一下的版本,$PYTHON25$ : python25 按照路径$PYTHON25_INSTALLER$ :pyinstaller 按照路径$USER_PY_PATH$ : 待打包文件路径假设待打包的脚本的启动脚本为:userexex.py 2. 按照 pyinstaller ,生成 config ... 阅读全文
posted @ 2010-09-05 10:51 JefferyZhou 阅读(2595) 评论(0) 推荐(0) 编辑

2010年8月24日

摘要: 在windows软件开发中经常会遇到配置信息的保持读取。简单配置信息经常会快速的想到 .ini当配置信息稍微复杂一些的时候我们通常会很快想到用 xml 来配置,在后台开发中,xml概念则更强。基本小型配置信息也用 xml 来配置在游戏开发中,通常会提到一个配置信息相关概念 '表格',在各个系统的设计当中通常会考虑到系统是表格驱动,在不同的人员眼里,'表格' 代表不同。在策划眼里,通常代码强大 ex... 阅读全文
posted @ 2010-08-24 22:18 JefferyZhou 阅读(7943) 评论(2) 推荐(1) 编辑

2010年8月16日

摘要: clr 中引入了一个 nullptr其实在C++中也是很容易搞一个空引用出来的。分享一个宏定义:#define NULLRef(type) (*((type*)(NULL)))这样也就不需要定义一些局部static来充当无效的返回值了不过这样做带来了代码风险,要慎重选择,这个宏就相当于告诉你不仅指针不可信,对象也是不可信的。代码里面也就会充斥着数据检查Sign Clown 2010.8.16 23... 阅读全文
posted @ 2010-08-16 00:15 JefferyZhou 阅读(3467) 评论(0) 推荐(0) 编辑

2010年7月7日

摘要: 前面已经展示了内存循环日志系统中ModuleBuffer的实现,这里继续展示剩下的两个部分: ThreadBuffer 和 MemLogSystem, ThreadBuffer用来管理ModuleBuffer实现分模块日志记录, MemLogSystem 用来管理线程日志,模块管理和线程管理是一个类似的管理,类似一个工厂的经销存管理商,不负责产品具体的创建和销毁,但提供接口查询,提领,回收。下面看... 阅读全文
posted @ 2010-07-07 23:10 JefferyZhou 阅读(3194) 评论(1) 推荐(1) 编辑

2010年7月6日

摘要: 在第一篇中主要由讨论日志的需求以及接口设计,这里阐述一下各个部分的实现过程。在设计过程中我们把整个系统分为三个部分:模块buffer, 线程buffer, 和内存日志系统接口。首先我们需要明确的是我们的写入是正对线程来说,不同线程需要在不同的内存段进行写入操作,而线程内的写入操作是针对模块而来的。所以正在的写入操作在模块buffer里面,这里我们直接实现 一个前面设计的模块buffer:上面我们提... 阅读全文
posted @ 2010-07-06 01:02 JefferyZhou 阅读(2884) 评论(5) 推荐(2) 编辑