news 2026/11/3 5:41:38

设计模式--享元模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
设计模式--享元模式

享元模式

建议阅读: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称之为固有状态(不会变化的状态)。
第二种数据作为私有数据,为不同树的实例所持有,例如位置、颜色等。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 0:02:16

超声波传感器(HC-SR04)与Arduino Uno及Mixly使用

【结合AI智能体学习记录】一、(HC-SR04)超声波传感器工作原理:超声波传感器和蝙蝠的定位原理一致,核心是通过计算超声波往返时间来换算距离:1. 触发发射:模块的Trig引脚接收到高电平信号后,会自…

作者头像 李华
网站建设 2026/11/2 23:52:57

风光柴储多目标联合调度问题探索

风光柴储多目标联合调度问题 联合调度分析各部分消纳比例,目标各部分成本最小和排放最小。 约束各部荷电状态,功率平衡等等在当今能源转型的大背景下,风光柴储多目标联合调度成为了热门话题。这种联合调度旨在实现能源的高效利用,…

作者头像 李华
网站建设 2026/11/2 23:52:56

UE5 C++(7):

(31) (32) 谢谢

作者头像 李华
网站建设 2026/11/3 8:12:42

网络安全核心技术要点速查手册:面试与工作实战必备总结

1.网络安全的概念 网络安全的定义 ISO对网络安全的定义:网络系统的软件、硬件以及系统中存储和传输的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,网络系统连续可靠正常地运行,网络服务不中断。 网络安全的属…

作者头像 李华
网站建设 2026/11/2 23:52:57

项目管理工具又添新锐,Bugzilla vs Kanass一文对比解析

Bugzilla 是一款常见的开源缺陷跟踪工具,Kanass是一款国产开源项目管理工具。本文将从功能、用户体验、集成能力等方面对比二者,帮助团队选择合适的工具。1、安装部署对比项bugzillakanass支持的操作系统种类Linux、Docker、Windows、MacOsLinux、Docker…

作者头像 李华