osg dragger 部分代码 简单分析
2012-08-30 21:29
239 查看
最近要自己实现一个osg dragger ,用dragger 来调整自己的图元。从网上没有找到较为完整的dragger代码说明,只能自己想办法了,于是花了一周多的时间来阅读dragger相关源代码,不得不佩服大神的设计,经典!
在 dragger 的组成上,使用了组合模式,将简单的dragger组合到一起,比如,二维plane dragger 使用了一维translate dragger 和scale dragger ,由多小dragger组成功能更完整的dragger。
用 dragger 实时调整图元时使用了命令模式和代理模式。将每个对图元的调整封装成一个命令,解耦。另外 dragger 和 被调整的图元实际并未被一起调整,而是使用的代理模式,由dragger调用这个代理来对图元调整,防止多个dragger共同操作一个图元时形成干扰。
在命令封装上使用了模板模式,每个命令计算其相应的变换矩阵。
一个dragger 会同时操作多个图元,每个图元被代理包装,放在一个容器内,然后dragger使用迭代器来访问,这里实现了迭代器模式。
非常经典的代码,阅读之后,受益颇多,大神就是大神!
在 dragger 的组成上,使用了组合模式,将简单的dragger组合到一起,比如,二维plane dragger 使用了一维translate dragger 和scale dragger ,由多小dragger组成功能更完整的dragger。
用 dragger 实时调整图元时使用了命令模式和代理模式。将每个对图元的调整封装成一个命令,解耦。另外 dragger 和 被调整的图元实际并未被一起调整,而是使用的代理模式,由dragger调用这个代理来对图元调整,防止多个dragger共同操作一个图元时形成干扰。
在命令封装上使用了模板模式,每个命令计算其相应的变换矩阵。
一个dragger 会同时操作多个图元,每个图元被代理包装,放在一个容器内,然后dragger使用迭代器来访问,这里实现了迭代器模式。
非常经典的代码,阅读之后,受益颇多,大神就是大神!
相关文章推荐
- FFMPEG-0.11.1分析之ffmpeg结构(简单涉及)与代码流程(主要涉及前部分的准备工作)
- 关于JMeter的CSV Data Set Config的源码改写(包括了部分界面等代码的分析)
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第八部分:子弹类<后续会提供源码下载链接>
- zebra代码简单分析
- 简单的时间片轮转多道程序内核代码分析
- x264源代码简单分析:编码器主干部分-2
- Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码
- 第二周:一个简单的时间片轮转多道程序内核代码及分析
- ReentrantReadWriteLock 可重入读写锁代码分析与简单实例
- 用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
- HTTP代理实现请求报文的拦截与篡改10--大结局 篡改部分的代码分析
- 第五部分 linux 按键驱动代码分析
- 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- swish-e代码分析,索引部分(2)
- 简单聊天室部分代码
- FFmpeg的H.264解码器源代码简单分析:解析器(Parser)部分
- Linux内核分析实验2——一个简单的内核代码分析
- opencv2.2.0源代码(include文件)分析(3)--上部分
- 【人脸检测】“人脸训练代码”项目笔记(4)——代码结构分析:训练部分结构
- FFmpeg的H.264解码器源代码简单分析:熵解码(Entropy Decoding)部分