2011年2月27日

摘要: Message System一、 概述消息分为为两种:远程消息(remote message)和本地消息(local message)。使用efd::MessageService,efd::IMessage,efd::Category.应用程序可以定义自己的消息子类。当消息需要在网上传播时,需要使用Foundation libraries和基本消息类中方法来实现相关代码,这些库提供了独立的网络字节序列。子类消息要在factory中注册,从而可以使它在网络上传输后被重构。消息系统使用category来对消息进行路由,一个Category可以被认为是一个地址。发送者不需要担心谁去接受,它要做的就是 阅读全文
posted @ 2011-02-27 14:06 arun 阅读(261) 评论(0) 推荐(0) 编辑
摘要: Data-driven Entity SystemData-driven Entity system是The Game Framework的核心。实体包含了实体模型(entity models)中定义的属性(propterty)和行为(behavior)。模型可以从而其模型中继承,从而可以进行功能的扩展。1 概述使用scheduler来处理运行时消息,它时一个用来处理运行时脚本和相关消息的系统服务。它和Entity Manager一起来触发实体的行为。实体在运行时被Entity Manager创建,Scheduler会根据相关事件来触发实体的相关行为,从而实现实体间的交互。这种交互时异步的。可 阅读全文
posted @ 2011-02-27 14:06 arun 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 智能指针在Gamebryo中通过使用智能指针实现引用计数的半自动化。这通过NiPointer来实现,这个模板类重载了操作符,使得它的实例表现出来像一个标准的指针。然而, 智能指针自动地增加和减少它指向对象的引用计数,从而应用程序不在直接调用NiRefOjbect的引用计数函数。例如在函数中如果声明一个局部智能指针变量并指向对象A,那么对象A的引用技术在赋值的时候将会增加1。当函数返回的时候,这个局部的智能指针被摧毁(超出了作用域),对象A 的引用计数将会减少1。 约定俗成,每个从NiRefObject派生的Gameroy类都有一个方便的智能指针声明,它表现在类型名称上加“Ptr”(NiNode 阅读全文
posted @ 2011-02-27 14:04 arun 阅读(302) 评论(0) 推荐(0) 编辑
摘要: RTTI运行时类型信息 基于几个底层的管理类Gamebryo设计成一个类的层次结构。下面的图展示了从NiObject派生的类的一个类层次结构的小子集。 以NiObject作为根节点的Gamebryo对象使用单继承的方式编写。这样NiObject的子类形成了一个类型树(注意这是类型之间的关系树不是指对象实例之间的关系)。运行时类型信息(RTTI)系统使得应用程序可以快速判断任何NiObject或其子类的直接类型或祖先类型 RTTI支持三个基本的操作: 1.判断一个对象的是不是严格的指定类型 2.判断一个对象是不是一个指定类型的派生类 3.动态转换一个类对象的指针到派生类的指针 所有的NiObje 阅读全文
posted @ 2011-02-27 13:59 arun 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 一、程序中的粒子系统1.NiPartical介绍可以通过3DS Max来创建粒子系统NIF文件,程序在使用这些NIF文件来创建,并随着场景的更新产生动画效果。粒子系统还可以绑定在特点的动画序列上,从而粒子可以随着动画角色同步。粒子可以是由screen-faceing texture quads组成或隶属于特定的场景图。在粒子产生后可以受特定的力、碰撞影响。可以通过Programmatic来创建和控制粒子系统。NiParticle.lib提供了GB中的粒子系统功能。Floodgate使得粒子系统的产生和模拟支持多线程处理。2.粒子系统概览粒子系统的渲染支持“standard material p 阅读全文
posted @ 2011-02-27 13:59 arun 阅读(567) 评论(0) 推荐(0) 编辑
摘要: NiAnimation 一、 简介 GB支持automatic animation playback和character-driven animation sequences。 GB动画系统基于控制器和动画对象机制。在这种机制中,动画控制器被分给一个动画对象去操作,这些控制器被放在动画对象的控制器列表中。当动画对象更新时,控制器会基于当前时间改变动画对象的某些行为。随着时间的变换,动画对象的属性也... 阅读全文
posted @ 2011-02-27 13:53 arun 阅读(862) 评论(0) 推荐(0) 编辑
摘要: Lightspeed介绍一、简介Emergent 公司设计原则:Rapid Prototyping,Rapid iterationLightSpeed的新特征(1) 新实体和行为系统基于数据驱动的实体定义实体的组成多种语言的定义行为(C++ 或 Lua)(2) 交互型游戏框架(Cross-platform game framework)模拟即时编辑支持第三方插件(3) 工具Toolbench实体模型工具(EMT)世界构造工具(World Buider)脚本调试器(Script Debugger)Rapid Particle Iteration withi Maya(4) 内核运行多线程分配策略 阅读全文
posted @ 2011-02-27 13:51 arun 阅读(1075) 评论(0) 推荐(0) 编辑
摘要: Progrmming 相关专题一、 基本知识1. 类的继承结构2. 对象系统使用了RTTI、智能指针、流操作等3. 静态对象和对象的生命期4. 命名相关5. 模板类:Lists、Array、Map等…………….6. UnicodeGB支持UTC-2和Ascii,而不支持UNICODE和_UNICODE二、 场景图1. 变换和坐标系世界坐标系(World coordinate system):模型坐标系(Model coordinate system):从根节点到物体的所有变换的集合局部坐标系(Local coordinate system):相对于父节点的变换GB使用的是右手坐标系,NiMat 阅读全文
posted @ 2011-02-27 13:45 arun 阅读(844) 评论(0) 推荐(0) 编辑
摘要: VS2005宏脚本添加注释模板September 20th, 2008 |lonkil|Visual C++,本站原创|发表评论|trackback现在的IDE越做越强大,为我等懒人省了不少。为了使用将来的代码自己或别人能看懂,注释这种东西必不可少。当为函数添加注释时,格式是固定的。每个函数写一遍,或从别的函数处拷贝过来,即麻烦又容易出错。这种重复劳动让人心烦都有不想写注释的欲望了,这时VS的宏可以干掉这些“脏、乱、累”的体力活。看了一下,VS2005的宏脚本就是VBScript,很容易上手。我写了一个生成函数注释模板的宏脚本,比较容易,看代码:?View CodeVB1 2 3 4 5 6 阅读全文
posted @ 2011-02-27 12:11 arun 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 第一部分 程序员必读第一章 对程序的错误处理第二章 Unicode 1 介绍 Unicode的所有字符都是16位(两个字节) 2 编写Unicode代码 (1) C语言库对Unicode的支持 wchar_t是个Unicode类型, typedef unsigned short wchar_t 使用TChar.h 文件创建ANSI/Unicode通用的源代码----主要是通过使用或不使用_UNICODE宏来 识别的 通用 ANSI Unicode TCHAR: char wchar_t _TEXT(X) L ## x X 注意:其中_TEXT宏 起到的作用和 L相似,只不过它更通用,L主要是用 阅读全文
posted @ 2011-02-27 12:10 arun 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一、对于基本声明1.const int r=100; //标准const变量声明加初始化,因为默认内部连接所以必须被初始化,其作用域为此文件,编译器经过类型检查后直接用100在编译时替换。2.extend const int r=100; //将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在程序其他地方进行了定义。3.const int r[ ]={1,2,3,4};struct S {int a,b;};const S s[ ]={(1,2),(3.4)}; //以上两种都是常量集合,编译器会为其分配内存,所以不能在编译期间使用其 阅读全文
posted @ 2011-02-27 12:05 arun 阅读(572) 评论(0) 推荐(0) 编辑

2010年4月23日

摘要: 深 入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包 涵。其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感。有如下几个问题,如果你能圆满回答就算过关:)。 1、 D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM和D3DPOOL_SCRATCH到底有何本质区别? . 阅读全文
posted @ 2010-04-23 09:07 arun 阅读(303) 评论(0) 推荐(0) 编辑

2009年8月18日

摘要: 摘要受管贴图(Managed textures,也就是我们通常所谓的“自动管理贴图”),在DX6中首次被引入,经过一系列的改进和增强,在DX9中自动管理的资源类型增加到贴图,顶点缓冲,顶点索引缓冲,所有这些资源使用统一的公共接口。通过使用D3D资源管理器,应用程序可以轻松的处理设备丢失、处理稍微过量的显存使用。有时开发者在使用受管资源会遇到一些困难,这部分归咎与系统的抽象特性。在大多数情况下使用受管对象是不错的选择,但有时出于性能考虑也会使用非托管资源。这篇文章将讨论一般情况下如何处理资源,受管与非受管资源的行为差别。内容l显示内存l受管资源l驱动管制资源l默认资源l系统内存资源l一般性的建议 阅读全文
posted @ 2009-08-18 11:03 arun 阅读(598) 评论(1) 推荐(0) 编辑

2009年8月17日

摘要: D3D资源管理资源分类 顶点缓冲(VertexBuffer) 索引缓冲(IndexBuffer) 纹理(Texture)资源存储 显存(Video Memory) 通过AGP直接访问的内存(AGP Aperture,也叫做非本地显存) 系统内存(System Memory)性能权衡 我们在创建D3D资源的时候需要填写两个参数:D3DPOOL、D3DUSAGE。这两个参数共同决定了资源最终存储在显存、非本地显存还是系统内存中。枚举类型D3DPOOL D3DPOOL_DEFAULT D3DPOOL_MANAGED D3DPOOL_SYSTEMMEM D3DPOOL_SCRATCH D3DPOOL_ 阅读全文
posted @ 2009-08-17 23:40 arun 阅读(417) 评论(0) 推荐(0) 编辑

2009年8月8日

摘要: 详细解说STL hash_map系列 0 为什么需要hash_map 1 数据结构:hash_map原理 2 hash_map 使用 2.1 一个简单实例 2.2 hash_map 的hash函数 2.3 hash_map 的比较函数 2.4 hash_map 函数3 相关hash容器 4 其他 4.1 hash_map和map的区别在哪里? 4.2 什么时候需要用hash_map,什么时候需要用map? 4.3 如何在hash_map中加入自己定义的类型? 4.4如何用hash_map替换程序中已有的map容器? 4.5为什么hash_map不是标准的? 4.6 有学习使用hash_map的 阅读全文
posted @ 2009-08-08 10:46 arun 阅读(2033) 评论(0) 推荐(0) 编辑

2009年8月2日

摘要: 一、源文件如何根据#include来关联头文件1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。#include <xxx.h>2,用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。#include “xxx.h”二、头文件如何来关联源文件 这个问题实际上是说,已知头文件“a.h”声明了一系列函数,“b.cpp”中实现了这些函数,那么如果我想在“c.cpp”中使用“a.h”中声明的这些在“b.cpp”中实现的函数 阅读全文
posted @ 2009-08-02 09:35 arun 阅读(4712) 评论(0) 推荐(0) 编辑
摘要: 一个声明就是一个定义,除非 :声明:引入名称定义:引入实体1.它声明了一个没有详细说明函数体的函数2.它包含一个extern定义符且没有初始化函数或函数体3.它是一个包含在一个类定义之内的静态类数据成员的声明,它必须在最终程序的某处准确的定义一次4.它是一个类名声明,如class test;5.它是一个typedef声明。言外之意:1。类的声明也就是定义2。同时赋初值的声明也就是定义,如int a=2;3。类非静态数据成员的声明也就是定义???4。类的所有成员函数的声明也就是定义一个定义就是一个声明,除非:1.它定义的是一个静态数据成员2.它定义了一个非内联成员函数内部连接和外部连接:编译时每 阅读全文
posted @ 2009-08-02 09:33 arun 阅读(266) 评论(0) 推荐(0) 编辑

导航