的笔记
随时随地编辑
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2011年6月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
统计
随笔 - 103
文章 - 0
评论 - 34
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
(11)
C++(11)
(rss)
Git
(rss)
随笔档案
(103)
2020年2月 (2)
2019年2月 (1)
2018年12月 (2)
2018年7月 (1)
2018年6月 (1)
2018年2月 (2)
2017年6月 (4)
2017年5月 (4)
2017年4月 (1)
2017年3月 (2)
2017年1月 (5)
2016年12月 (2)
2015年12月 (1)
2015年8月 (1)
2015年7月 (1)
2014年7月 (2)
2014年5月 (1)
2014年2月 (1)
2013年9月 (1)
2013年8月 (2)
2013年5月 (1)
2013年4月 (1)
2013年3月 (1)
2012年8月 (1)
2012年7月 (1)
2012年4月 (1)
2012年2月 (3)
2012年1月 (5)
2011年12月 (6)
2011年7月 (13)
2011年6月 (15)
2011年5月 (5)
2011年4月 (9)
2011年3月 (4)
相册
Animation
Blender架构
BLOG_PHOTO
Blueprints
cegui
Character
DirectX
GameDesign
GameplayAbility
SortingAlgorithms
BLOG
飞猪哥哥(?)
林公子
與食人魔獸之間的恩怨情仇
玉清哥哥(?)
搜索
最新评论
1. re: Ogre骨骼动画分析[未登录]
内容看的有些懂了,不过作者很有意思
--albert
2. re: LUA源码分析上[未登录]
忘了回你代码格式用的VC自带的@zr
--me
3. re: LUA源码分析上
@zr 有的是doxygen生成的,有的是understand生成的,再有的是PS的
--夸父的笔记
4. re: 晒晒预处理Ogre宏[未登录]
有意思吗?楼猪
--aa
5. re: LUA源码分析上
请问文件中代码调用图你是用什么软件生成的?
ps:文中代码风格看着很舒服,能不能也透漏下是哪种软件的style?
--zr
6. re: 遇到唐雨柔,Sandbox崩溃
嘿嘿,还好,不是遇上夏雨荷
--渣浆泵
7. re: Ogre骨骼动画分析
扔下太久了,看着好累
--渣浆泵
8. re: CEGUI笔记
我创建render和system时老是失败?求解释啊
--song
9. re: LUA源码分析上[未登录]
自己整理的啊。。谢谢分享
--shongbee2
10. re: Ogre TerrainGroup地形赏析
楼主很认真啊。 我反正是写不出这么细致的BLOG。
--Render Donkey
阅读排行榜
1. BLENDER架构(10012)
2. CEGUI笔记(5913)
3. Ogre TerrainGroup地形赏析(5476)
4. Unreal Engine 4 开发记录(5266)
5. LUA源码分析上(5056)
6. Ogre骨骼动画分析(4742)
7. 武侠二源码分析(4600)
8. lua编译笔记(4555)
9. UE4扯淡大杂烩第一季(3289)
10. UE4小笔记(3279)
评论排行榜
1. LUA源码分析上(7)
2. CEGUI笔记(4)
3. Ogre嵌入qt笔记(4)
4. main 函数反汇编之函数创建和恢复现场(3)
5. Ogre骨骼动画分析(3)
6. Ogre TerrainGroup地形赏析(3)
7. 你说我说他说大家一起玩点好玩的游戏(2)
8. 图形学基础的一点好书(1)
9. OpenGL ES 3.0,代号哈爾蒂亞(1)
10. C++继承类中构造函数与析构函数的容易误解的地方(1)
Ogre::Singleton 笔记
先看代码
1
/**/
/*
* Template class for creating single-instance global classes.
2
*/
3
template
<
typename T
>
class
Singleton
4
{
5
private
:
6
/**/
/*
* \brief Explicit private copy constructor. This is a forbidden operation.
*/
7
Singleton(
const
Singleton
<
T
>
&
);
8
9
/**/
/*
* \brief Private operator= . This is a forbidden operation.
*/
10
Singleton
&
operator
=
(
const
Singleton
<
T
>
&
);
11
12
protected
:
13
14
static
T
*
ms_Singleton;
15
16
public
:
17
Singleton(
void
)
18
{
19
assert(
!
ms_Singleton );
20
#if
defined( _MSC_VER ) && _MSC_VER < 1200
21
int
offset
=
(
int
)(T
*
)
1
-
(
int
)(Singleton
<
T
>*
)(T
*
)
1
;
22
ms_Singleton
=
(T
*
)((
int
)
this
+
offset);
23
#else
24
ms_Singleton
=
static_cast
<
T
*
>
(
this
);
25
#endif
26
}
27
~
Singleton(
void
)
28
{ assert( ms_Singleton ); ms_Singleton
=
0
; }
29
static
T
&
getSingleton(
void
)
30
{ assert( ms_Singleton );
return
(
*
ms_Singleton ); }
31
static
T
*
getSingletonPtr(
void
)
32
{
return
ms_Singleton; }
33
}
;
创建对象
OGRE_NEW CgFxScriptLoader();
销毁对象
OGRE_DELETE CgFxScriptLoader::getSingletonPtr();
类
Ogre::Singleton< T >
Ogre::Singleton< ArchiveManager >
Ogre::ArchiveManager
Ogre::Singleton< CompositorManager >
Ogre::CompositorManager
Ogre::Singleton< ControllerManager >
Ogre::ControllerManager
Ogre::Singleton< DistanceLodStrategy >
Ogre::DistanceLodStrategy
Ogre::Singleton< DynLibManager >
Ogre::DynLibManager
Ogre::Singleton< ExternalTextureSourceManager >
Ogre::ExternalTextureSourceManager
Ogre::Singleton< FontManager >
Ogre::FontManager
Ogre::Singleton< GpuProgramManager >
Ogre::GpuProgramManager
Ogre::Singleton< HardwareBufferManager >
Ogre::HardwareBufferManager
Ogre::Singleton< HighLevelGpuProgramManager >
Ogre::HighLevelGpuProgramManager
Ogre::Singleton< LodStrategyManager >
Ogre::LodStrategyManager
Ogre::Singleton< LogManager >
Ogre::LogManager
Ogre::Singleton< MaterialManager >
Ogre::MaterialManager
Ogre::Singleton< MeshManager >
Ogre::MeshManager
Ogre::Singleton< OverlayManager >
Ogre::OverlayManager
Ogre::Singleton< ParticleSystemManager >
Ogre::ParticleSystemManager
Ogre::Singleton< PixelCountLodStrategy >
Ogre::PixelCountLodStrategy
Ogre::Singleton< Profiler >
Ogre::Profiler
Ogre::Singleton< ProgramManager >
Ogre::RTShader::ProgramManager
Ogre::Singleton< ProgramWriterManager >
Ogre::RTShader::ProgramWriterManager
Ogre::Singleton< RenderSystemCapabilitiesManager >
Ogre::RenderSystemCapabilitiesManager
Ogre::Singleton< ResourceBackgroundQueue >
Ogre::ResourceBackgroundQueue
Ogre::Singleton< ResourceGroupManager >
Ogre::ResourceGroupManager
Ogre::Singleton< Root >
Ogre::Root
Ogre::Singleton< SceneManagerEnumerator >
Ogre::SceneManagerEnumerator
Ogre::Singleton< ScriptCompilerManager >
Ogre::ScriptCompilerManager
Ogre::Singleton< ShaderGenerator >
Ogre::RTShader::ShaderGenerator
Ogre::Singleton< ShadowTextureManager >
Ogre::ShadowTextureManager
Ogre::Singleton< SkeletonManager >
Ogre::SkeletonManager
Ogre::Singleton< TerrainGlobalOptions >
Ogre::TerrainGlobalOptions
Ogre::Singleton< TextureManager >
Ogre::TextureManager
不同于有些将singleton对象声明为static,ogre将对象的指针声明为static
1、节省全局静态存储区空间。每个singleton只会占用全局静态存储区一个指针所用的空间。
2、可以手动删除这个对象。如果将对象声明为singleton,不能手动删除吧。
3、构造的时候可以使用参数,很灵活。
posted on 2011-06-12 20:47
的笔记
阅读(502)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 的笔记