自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

聚焦游戏和图形引擎开发技术

Stay hungry, Stay foolish

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 访问者模式 Visitor

访问者模式(visitor)表示一个作用于某对象结构中的各元素的操作。它可以使你在不改变各元素的类的前提下定义作用于这些元素的新操作。这用于某个对象结构中的元素数目比较固定(基本不会变动),而对于这些元素的操作可能要变化(增加新操作),vistor提供了在某个状态下,对对象结构中各元素的不同操作的访问接口,对象中使用accept接口接受一个具体的访问者。符合open-close原则。

2011-06-07 11:06:00 2259

原创 原型模式-Prototype

原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。  从UML图可知道,原型接口关键是有一个clone方法,clone的实现要注意是浅复制还是深复制,具体看需要了。比如在做配置编辑器时,由于python是对象引用机制,所以我为各个对象增加了c

2011-06-07 11:05:00 1690

原创 工厂方法模式 Factory Method

工厂方法模式(Factory Method),定义一个用于创建对象的接口(抽象工厂类),让子类(具体工厂类)决定实例化哪一个类(产品类)。工厂方法使一个类的实例化延迟到其子类。  和简单工厂模式的比较:简单工厂使用一个单一的工厂类来生产各种具体产品,客户端直接使用工厂类来实例化产品类;工厂方法模式使用一个抽象工厂和多个具体工厂类,具体工厂类产生某种具体的产品,抽象工厂定

2011-06-07 11:03:00 1414

原创 代理模式Proxy

代理模式:为其他对象提供一种代理以控制对这个对象的访问。这种模式其实就是增加了一个间接层,因此可以附加多种用途。简单的描述就是:服务提供类和代理类实现同一个接口,代理类使用其内部聚合的服务提供类提供服务,服务提供类本身不被客户端访问。这样在任何使用服务提供类的地方都可以使用代理类。代理使用的场合:1,远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存

2011-06-07 11:02:00 1471

原创 装饰模式 Decorator

装饰模式用来动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。这个图是用JUDE画的,光看图难以理解这个模式,从书上的例子可以看出,这个模式的关键在于装饰类是被装饰类(Component)的子类,同时装饰类还聚合了被装饰类。装饰类有个类似 setComponent(Component& component)的接口,内部保存了Component对象的引

2011-06-07 11:01:00 1328

原创 几个设计原则

单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。如果你能够想到多于一个的动机去改变一个类,那么

2011-06-07 10:59:00 1279

原创 简单工厂模式&策略模式

从一系列同类的对象/算法/规则中抽象出共性-基类,客户和基类打交道,问题是如何选择实例化哪个派生类,简单工厂模式中,使用工厂类实例化派生类,选择过程被封装在工厂类中,客户需要指定一个参数给工厂,工厂按照参数选择实例化出客户需要的派生类。简单工厂模式缺点是:当具体的算法需要改变增加时,就要修改工厂类,当这种改变的需求很频繁时,工厂方法就比较麻烦了。在简单工厂模式中,客户需要知道抽象基类,也需

2011-06-07 10:58:00 1555

转载 hash vs RBTree

数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)接触堆数据结构是在排序里面讲的,空间复杂度O(1),时间复杂度O(NlogN),但是在实践中还是不如快速排序(好像快速排序可以更好的利用硬件特性)。堆的意义就在于:最快的找到最大/最小值,在堆结构中插入一个值重新构造堆结构,取走最大/最下值后重新构造堆结构其时间复杂度为O(logN),而其他方法最少

2011-06-07 10:51:00 2375 3

原创 HSV color space

RGB之外的颜色模型虽然之前也知道,但真不知道干什么用的,貌似给人物换色用HSV不错参考:http://zh.wikipedia.org/wiki/HSL_%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4现在我用修改HSV的方法给人物换衣服的颜色,就像RTS游戏中那样。需要换贴图上哪些部分是个问题,我采用mask图标示出来。将mask出来的位置的像素

2011-06-07 10:50:00 1986

原创 python的可调用对象

这篇文章 http://www.builder.com.cn/2008/0530/893091.shtml定义__call__使一个类成为可调用,相当于重载了()。class g_dpm(object):    def __init__(self,g):        self.g = g            def __call__(self,t):    

2011-06-07 10:46:00 1599

原创 c++ RTTI冲突

今天碰到了一个问题,郁闷了半天。项目里用的一个库更新了,我们这儿有些连接错误,type info ...。最后发现是那个库编译时将RTTI关了,而我们项目是开着的。关闭RTTI搞定

2011-06-07 10:39:00 1340

原创 OpenGL ES draw call优化

1)glDrawArrays vs glDrawElementsglDrawArrays只能用在顶点有序,无共享顶点的情况。否则会导致顶点数很多,效率很低。一般情况都使用glDrawElements另一个角度说,使用glDrawArrays一般是三角带,但往往一个模型要用多个三角带才能表达,这样就需要多次draw call,所以不如使用索引,一个draw call搞定。2) bat

2011-06-07 10:33:00 6277

转载 iOS stencil buffer

iOS stencil buffer Both ES1.1 and ES2.0 support stencil operations.However the availability of a stencil buffer is renderer-dependent. On iPho

2011-06-07 10:32:00 1795

WebGL Programming Guid (英文原版带目录)

WebGL Programming Guid (英文原版带目录),OpenGL ES programming Guid作者又一力作

2018-12-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除