当前位置: 首页 > news >正文

设计模式--享元模式

享元模式

建议阅读:https://gpp.tkchu.me/flyweight.html

定义

在我们打游戏时,有没有想过为什么这么多的人物或者景色能被这么快的渲染出来,而没有丝毫卡顿(当然GPU性能要好0.0)。

比如说,求生之路的大量丧尸以及其周围的景色(譬如树木)。
这是非常大的数据量,多边形网格和纹理数据非常大。描述整个场景的对象在一帧的时间内就交给GPU实现是太过了。

因此,有没有什么比较好的处理办法?有的,游戏中通常用享元模式来处理这种场景。

其关键在于,大量的人物/树木大多是长得一模一样,他们使用了相同的网络和纹理。这就意味着这些人物/树木的实例的大部分字段是一样的。

因此,我们可以将其共有部分拿出,分离到一个新类中。例如,游戏中的每个树的实例只需有一个对这个共享数据的引用,留下来的是那些实例相关的数据:

// share class TreeModel { private: Mesh mesh_; Texture bark_; Texture leaves_; }
// private class Tree { private: TreeModel* model; Vector position_; double height_; double thickness_; }

可见,享元模式通过将对象的数据分成两种来解决这种问题。
第一种数据作为共享数据,可被每棵树的实例所应用。Gof称之为固有状态(不会变化的状态)。
第二种数据作为私有数据,为不同树的实例所持有,例如位置、颜色等。

http://www.jsqmd.com/news/206174/

相关文章:

  • KTH7111昆泰芯16位高速高精度离轴磁编码器可编程ABZ/UVW/PWM/SPI/SSI多模式输出角度传感器
  • 台湾大哥大:全民皆可通过其交易所直接购买加密货币
  • 表格解析结果错位严重,如何纠正单元格的对应关系?
  • 一行命令踩坑?Step-Audio-EditX 中 Git LFS 报错的完整解决方案
  • NginxDeny绕过-玄武杯2025-眼见不为实
  • 【DRIS】颠覆隐蔽通信!DRIS技术实现同步检测与无源干扰,无需信道知识和额外功耗【附MATLAB代码】
  • 引领企业发展:走进标杆企业参观游学考察的好处
  • 信创云渲染:助力数字时代自主创新与高效协作
  • 20260106给荣品RD-RK3588S-AHD开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配hdmi0输出
  • Instagram账号风控全解:深度剖析封号原因、申诉流程与长效预防策略
  • 2026必备!专科生毕业论文必备!10个AI论文平台深度测评
  • 基于微信小程序的毕业设计项目:个性化英语学习小程序+毕业论文+答辩ppt全套
  • 2026研究生必备!10个降AI率工具测评榜单
  • 2026年最佳替代数据提供商(顶级平台对比)
  • 聚焦三大资源整合型发稿平台,深度测评其批量曝光效能
  • SoulX-Podcast 本地部署与WebUI体验教程(支持方言播客生成)
  • 亲测好用!9款AI论文平台测评:研究生毕业论文必备
  • 04.深入闭包和js函数的this指向跟规则
  • 04.深入闭包和js函数的this指向跟规则
  • 大模型面试 请分别说说你对 DeepSeek -V3和 DeepSeek -R1的理解,它们在架构或训练策略上有何关键差异?
  • java BIO、NIO、AIO用法样例
  • 运放内部分立器件仿真,仿真对应的参数 LM741
  • java垃圾收集 minorgc majargc fullgc
  • java垃圾收集 minorgc majargc fullgc
  • 基于RK3399Pro与RK3568的车载防撞方案:为货车泥头车安全护航
  • 超详细逻辑回归解说
  • 超声波传感器(HC-SR04)与Arduino Uno及Mixly使用
  • UVM-phase中的object机制
  • 学霸同款2026TOP10AI论文网站:本科生毕业论文神器测评
  • react组件内添加一个全局点击时间,点击函数能区分是否是某个特定的id的dom触发的