news 2026/4/17 20:24: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/4/18 8:05:03

亲测好用8个AI论文写作软件,本科生搞定论文不求人!

亲测好用8个AI论文写作软件,本科生搞定论文不求人! AI 工具如何让论文写作变得轻松高效 在当今这个信息爆炸的时代,本科生的论文写作任务日益繁重,尤其是在面对大量文献阅读、数据分析和文字表达时,许多同学都会感到力…

作者头像 李华
网站建设 2026/4/18 7:05:06

分享一个MySQL 8.0复制架构主从自动切换脚本

/* by 01022.hk - online tools website : 01022.hk/zh/formatc.html */ #!/bin/bash # # 基于GTID的MySQL 8.0 一主一从架构主从切换脚本 # 版本: 3.0 # 优化内容: 全变量配置、增强可配置性、改进错误处理 # # >>>>>>>>>>>> 第一部分&a…

作者头像 李华
网站建设 2026/4/18 8:26:36

《深入剖析 NumPy ndarray:为何比 Python List 快 50~100 倍?》

《深入剖析 NumPy ndarray:为何比 Python List 快 50~100 倍?》 一、开篇引入:从 Python 到 NumPy 的速度革命 Python 以简洁优雅的语法和强大的生态系统闻名,从 Web 开发到数据科学、人工智能,它几乎无处不在。然而&…

作者头像 李华
网站建设 2026/4/14 17:28:58

告别论文问卷烦恼!百考通AI带你轻松搞定问卷设计与分析

作为一名刚经历过毕业论文“洗礼”的学长,我深刻理解同学们在设计问卷时的无助感。记得我当时为了设计一份像样的问卷,前后修改了十几遍,结果还被导师指出“结构混乱”、“信效度不足”。 幸运的是,现在有了像百考通AI这样的智能…

作者头像 李华
网站建设 2026/3/12 18:00:06

【记录】AU|什么是泛音和音高,在频谱上如何体现?人类和乐器的区别明显吗?走近基本知识:从泛音列到人声奥秘的声学探索

文章目录省流版基本操作观察结果详细版前言:一次好奇驱动的探索一、 实验准备:AU中的基础工具二、 核心发现:乐音 vs. 人声的频谱世界1. 谐波的秩序:乐器为何听起来“丰满”?2. 人声的“指纹”:声道如何塑造…

作者头像 李华