摘要: 几个月前公司准备将我们的UI系统从CEGUI换到Scaleform上,因此我也积累了些Scaleform结合C++编程的经验,在这里简单记录一下。 Scaleform实现了用硬件加速渲染flash的功能,利用flash的强大功能可以使游戏的界面看起来更酷炫一些。对于程序员来说,我最关心的就是Scaleform如何跟C/C++通讯。 从编程角度来讲Scalefrom和C/C++通讯还是比较简单的,其实就是C/C++和ActionScript的通讯。Scaleform已经提供了一些简便的接口让我们来使用。在AS中可以用fscommand或者ExternalInterface发出一个事件,这个事件包含了一个字符串和参数。字符串表示事件的名字,其实就是被调用C函数的名字,参数可以是多个。当Scaleform收到这样的事件后会通过callback的方式通知C/C++,在这个callback里包含了AS发出的字符串和参数。我们可以在这个callback里根据字符串调用相应的C函数。因此注册一个C函数给AS用,其实就是将函数名和函数地址存储在一个map里,等到收 阅读全文
posted @ 2010-08-11 22:43 Jee 阅读(4624) 评论(2) 推荐(0) 编辑
摘要: (本站文章均出自原创,转载请注明出处~) 最近在阅读Gamebryo的文档,先读的Object System这部分。Gamebryo中从NiRefObject继承下来的类都支持引用计数,也就是说支持0引用下对象自动销毁。一直以来都听闻智能指针的大名,平常项目中并没有使用过,所以也一直没抽空去研究,今天花了点时间自己实现了一个智能指针。 要实现一个智能指针就要先实现一个支持引用计数的类,主要负责增加... 阅读全文
posted @ 2010-05-19 21:49 Jee 阅读(468) 评论(0) 推荐(0) 编辑
摘要: (本站文章均出自原创,转载请注明出处~)很多年前就开始用MFC了,但一直没研究过内部的原理,仅仅是能熟练使用VC++/AppWizard写软件而已。作为一个游戏程序员,Win32的技术还是要做基本功的,于是阅读了一些MFC的源代码,搞清楚了MFC消息路由/映射机制。以下分三个步骤就可以描述清楚: 1. MFC中的每个窗口都对应一个C++类 Windows中的窗口用HWND来标示,C++类是指CW... 阅读全文
posted @ 2010-03-31 00:21 Jee 阅读(421) 评论(0) 推荐(0) 编辑
摘要: (本站文章均出自原创,转载请注明出处~) 确保你的程序只有一个进程实例在运行有很多种方法,利用共享数据段的方法最简单方便。一个EXE文件是有不同的段(Section)组成的,其中有若干代码段和若干数据段。在默认情况下,操作系统为了确保每个进程实例在安全环境中运行会为每个进程实例创建自己的数据段的拷贝,这样多个进程实例就不会因为一个实例修改了数据段的内容而影响到另外的进程实例。但是我们也可以为EX... 阅读全文
posted @ 2010-03-28 20:40 Jee 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。 vector c; for(vector::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; } 阅读全文
posted @ 2010-01-29 16:14 Jee 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 有时候程序中有多个System对象,比如3D引擎中有RenderSystem, InputSystem, ResoureSystem。 所有这些对象都比较庞大,负责的工作也非常多,并且我们希望这些System在程序中只存在一个实例。为此我们很容易想到用单例模式来实现它。但有时候我们希望程序中存在一个入口,访问程序中的System都必须通过该入口来访问。这里有一种新的思想来实现System的单例化。 阅读全文
posted @ 2009-04-07 19:54 Jee 阅读(179) 评论(0) 推荐(0) 编辑