news 2026/5/7 21:28:52

设计模式--享元模式

作者头像

张小明

前端开发工程师

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/5/2 6:45:35

企业落地 ChatBI,如何构建可信可靠的数据底座?

在企业 ChatBI 落地过程中,数据底座的技术路线选择直接决定了数据可信度、维护成本和业务响应速度。传统宽表架构在数据口径一致性、维护成本和灵活性上已难以支撑企业级 ChatBI 的规模化应用,而基于 NoETL 明细语义层的方案正成为新一代数据底座的主流选…

作者头像 李华
网站建设 2026/5/1 8:21:58

超详细逻辑回归解说

逻辑回归是用来做“分类”的模型(比如判断“是不是垃圾邮件”“病人有没有患病”“用户会不会点击广告”),而非回归。它的核心是:用“概率”的方式,把线性回归的输出(连续值)转化为“是/否”的分…

作者头像 李华
网站建设 2026/5/3 2:15:04

基于springboot的美食分享平台网站设计实现

技术背景SpringBoot作为Java生态中广泛使用的框架,简化了传统Spring应用的配置和部署流程。其自动配置、内嵌服务器和依赖管理特性,使得开发者能快速构建高可用的Web应用。在美食分享平台场景中,SpringBoot的高效开发模式适合处理用户生成内容…

作者头像 李华
网站建设 2026/4/29 19:40:05

BMI270,高性能高性价比的运动传感器, 现货库存

BMI270 是一款高性能、低功耗的 6 轴惯性测量单元 (IMU),集成了高精度三轴加速度计和陀螺仪,并具备智能运动触发中断功能,为各种高性能应用提供了可靠且经济的解决方案。高性能特点 高精度传感器: BMI270 的加速度计和陀螺仪均具有…

作者头像 李华
网站建设 2026/4/30 4:06:54

信息安全的核心支柱:深入解析网络安全技术体系与实践

一、网络安全基础 OSI参考模型与TCP/IP开放模型对比 应用层 应用层 TehnetHTTPSMTPFTP DNSTFTPSSH 表示层 会话层 传输层 传输层 TCPUDP网络层 网络层 IP协议簇(RIP、OSPF、SNMP、ICMP) 数据链路层 物理和数据链路层 以太网 令牌…

作者头像 李华
网站建设 2026/4/24 16:11:58

在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

作者头像 李华