剑孤寒的小站
人生的价值不是用时间,而是用深度去衡量的!
posts - 75, comments - 290, trackbacks - 0, articles - 0
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2011年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
留言簿
(15)
给我留言
查看公开留言
查看私人留言
随笔分类
Galaxy2D 游戏引擎发布(40)
Galaxy2D 游戏引擎教程(7)
Galaxy2D 游戏引擎扩展(8)
Lua(5)
游戏编程(20)
随笔档案
2017年3月 (1)
2017年1月 (1)
2016年11月 (1)
2016年3月 (1)
2015年11月 (1)
2015年8月 (1)
2015年7月 (1)
2015年6月 (1)
2014年9月 (1)
2014年8月 (1)
2014年3月 (1)
2014年1月 (1)
2013年9月 (1)
2013年7月 (2)
2013年6月 (3)
2013年5月 (1)
2013年4月 (2)
2012年12月 (2)
2012年10月 (1)
2012年9月 (2)
2012年7月 (1)
2011年12月 (1)
2011年10月 (3)
2011年9月 (4)
2011年7月 (1)
2011年6月 (1)
2011年5月 (2)
2011年4月 (1)
2010年9月 (1)
2010年5月 (3)
2010年4月 (2)
2010年3月 (1)
2010年2月 (2)
2010年1月 (11)
2009年9月 (3)
2009年5月 (2)
2009年4月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (1)
2008年10月 (6)
链接
搜索
最新评论
1. re: Galaxy2D Game Engine 4.2 开发版 发布
评论内容较长,点击标题查看
--剑孤寒
2. re: Galaxy2D Game Engine 4.2 开发版 发布
Update:
◆随机数添加创建生成器函数
◆随机数添加Mersenne Twister算法随机数生成函数
◆修改获得/失去焦点偶尔收不到回调的bug
--剑孤寒
3. re: Galaxy2D Game Engine 4.2 开发版 发布
评论内容较长,点击标题查看
--wwdd
4. re: Galaxy2D Game Engine 4.2 开发版 发布
Update (2016-8-1)
◆RichText超链接修改为抬起时才触发事件
◆Shader添加读取已编译的二进制文件支持,并添加相关数据设置接口
--剑孤寒
5. re: Galaxy2D Game Engine 4.2 开发版 发布
@baidwwy
你是一直都这样还是用了上面那个dll才这样
--剑孤寒
阅读排行榜
1. 在Lua中使用枚举型变量 (15569)
2. Galaxy2D游戏引擎教程1 - Hello World(7694)
3. 在Lua中使用List (6773)
4. Galaxy2D Game Engine 4.2 开发版 发布 (6128)
5. Win7下ATI显卡更新驱动程序打不开Catalyst Control Center的解决办法(5913)
写了个用shared_ptr管理游戏资源的帮助类
Posted on 2013-06-28 16:15
剑孤寒
阅读(792)
评论(0)
编辑
收藏
引用
所属分类:
Galaxy2D 游戏引擎扩展
用这个东东可以简化一些引用计数方面的管理,不过从Get*()接口获取的资源还是要先自己调一下AddRef()函数
class
CRefCountHelper
{
public
:
template
<
typename T
>
static
shared_ptr
<
T
>
Create(T
*
p)
{
shared_ptr
<
T
>
ptr(p, RefReleaseFunc());
return
ptr;
}
private
:
struct
RefReleaseFunc
{
void
operator
()(gge::ggeRefCounter
*
p)
{
if (p) p->Release();
}
}
;
}
;
用法如下:
//
假设以前有一段代码是要载入一个texture到一个sprite上,例如下面这段代码:
ggeTexture
*
tex
=
Texture_Load(
"
image.png
"
);
if
(
!
tex)
return
false
;
ggeSprite
*
spr
=
Sprite_Create(tex);
if
(
!
spr)
{
GGE_RELEASE(tex);
return
false
;
}
//
现在的写法可以改成下面这样,不用再去人肉Release了
shared_ptr
<
ggeTexture
>
tex
=
CRefCountHelper::Create( Texture_Load(
"
image.png
"
) );
if
(
!
tex)
return
false
;
shared_ptr
<
ggeSprite
>
spr
=
CRefCountHelper::Create( Sprite_Create(tex.
get
()) );
if
(
!
spr)
return
false
;
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
写了个用shared_ptr管理游戏资源的帮助类
2D骨骼动画 Spine Render For Galaxy2D [Demo + 代码]
Galaxy2D Game Engine 4.0 开发版 发布
TexturePacker 1.1 发布
写了一个xls2xml转换工具
Irrlicht For Galaxy2D
CEGUI Render For Galaxy2D
Galaxy2D 导出类到Lua模块源代码
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 剑孤寒