设计模式--享元模式

享元模式

建议阅读: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.mzph.cn/news/1119534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KTH7111昆泰芯16位高速高精度离轴磁编码器可编程ABZ/UVW/PWM/SPI/SSI多模式输出角度传感器

KTH7111是一款高速高精度的磁编码器,内置了先进的自动非线性校准(ANLC)功能。 用户可通过写入寄存器或引脚触发校准流程,芯片能够自动完成传感器非线性误差的测 量与补偿参数计算,并将校准结果存入内部MTP(…

表格解析结果错位严重,如何纠正单元格的对应关系?

国家金融监督管理总局鼓励银行业保险业加快数字金融发展,发挥数字技术与数据要素双轮驱动作用;支持贸易数字化,鼓励金融机构利用数字技术加强贸易数据应用,创新电子贸易单据相关金融产品与服务,为电子提单等使用创造便…

台湾大哥大:全民皆可通过其交易所直接购买加密货币

电信巨擘台湾大哥大于2026年1月5日正式宣布,旗下虚拟资产交易所TWEX全面开放给所有民众使用,不再局限于其电信服务的既有用户。这项举措不仅象征着加密货币投资的“全民化”时代正式来临,更为市场提供了一个由大型企业背书、强调安全与信赖的…

一行命令踩坑?Step-Audio-EditX 中 Git LFS 报错的完整解决方案

📌 摘要 在部署 Step-Audio-EditX 这类包含大模型权重的项目时,很多同学都会遇到一个看似“莫名其妙”的错误:git: lfs is not a git command。本文将结合真实安装场景,详细分析该问题产生的原因,并给出在 Ubuntu 环境…

NginxDeny绕过-玄武杯2025-眼见不为实

一、附件代码 # pylint: disablemissing-module-docstring,missing-function-docstringimport os from flask import Flask, render_templateapp Flask(__name__, template_folder"templates")app.route("/") def index():return render_template("…

【DRIS】颠覆隐蔽通信!DRIS技术实现同步检测与无源干扰,无需信道知识和额外功耗【附MATLAB代码】

颠覆隐蔽通信!DRIS技术实现同步检测与无源干扰,无需信道知识和额外功耗 文章来源 微信公众号 EW Frontier 一、文章题目 基于迪斯科可重构智能表面(DRIS)的隐蔽通信同步检测与干扰技术 二、摘要 隐蔽通信相比密码学和物理层…

不同就业方向(如AI、网络安全、前端开发)的具体学习路径和技能要求是什么?

了解不同就业方向的具体要求,确实是做好职业规划的关键一步。下面这个表格汇总了AI、网络安全和前端开发这三个热门方向的概况,帮你快速建立整体印象。对比维度​AI(人工智能)​网络安全​前端开发​核心岗位举例​算法工程师、数…

引领企业发展:走进标杆企业参观游学考察的好处

在当前瞬息万变的商业环境中,企业面临着一个挑战:如何在快速发展的行业发展中保持竞争力,持续创新,同时还能提高员工的技能和才能?答案可能比您想象的要简单——标杆研学游学。标杆研学游学,一种通过实地考…

信创云渲染:助力数字时代自主创新与高效协作

在信息技术应用创新发展的浪潮下,各行各业正加速推进数字化、智能化转型。其中,图形图像处理与实时交互的高负载需求日益凸显,特别是在工业设计、建筑设计、仿真培训、数字孪生、互动媒体等领域。传统的本地渲染模式受限于终端算力、部署成本…

20260106给荣品RD-RK3588S-AHD开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配hdmi0输出

20260106给荣品RD-RK3588S-AHD开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配hdmi0输出 2026/1/6 17:44缘起:荣品PRO-RK3566开发板适配Rockchip原厂的Buildroot【linux-5.10】系统时,eth0是默认隐藏的。 查询/询问DeepSeek之后,可…

Instagram账号风控全解:深度剖析封号原因、申诉流程与长效预防策略

近年来,Instagram的风控系统日趋严格,账号被封成为许多用户,无论是个人用户、多账号运营者还是跨境电商与广告投手,都可能突然面临的困扰:明明正常操作,却突然收到账号禁用通知?新注册的账号毫无…

2026必备!专科生毕业论文必备!10个AI论文平台深度测评

2026必备!专科生毕业论文必备!10个AI论文平台深度测评 2026年专科生论文写作新选择:AI平台测评指南 随着人工智能技术的不断进步,越来越多的专科生开始借助AI工具辅助毕业论文的撰写。然而,面对市场上琳琅满目的AI论文…

基于微信小程序的毕业设计项目:个性化英语学习小程序+毕业论文+答辩ppt全套

博主介绍: CSDN毕设辅导第一人、靠谱第一人、csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客优秀创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:…

2026年最佳替代数据提供商(顶级平台对比)

TLDR: 另类数据市场由向合规性、人工智能驱动的分析和数据粒度的转变所定义。在2026年,最好的另类数据提供商是那些提供透明数据来源和专业领域专业知识的公司。我们的顶级平台——YipitData、FactSet和Eagle Alpha——根据其卓越的数据质量、实时交付和稳健的合规框…

2026研究生必备!10个降AI率工具测评榜单

2026研究生必备!10个降AI率工具测评榜单 研究生必备!2026年降AI率工具测评榜单出炉 随着学术规范日益严格,AI生成内容检测技术不断升级,越来越多的研究生在论文写作过程中面临“AI率过高”的问题。无论是初稿还是修改后的版本&am…

聚焦三大资源整合型发稿平台,深度测评其批量曝光效能

在信息粉尘化的营销环境下,企业品牌声音的突围愈发困难。单点、零散的媒体投放不仅效率低下,其不可控的成本与模糊的效果也令营销决策者却步。于是,能够提供“一键发布,多平台同步”的资源整合型软文发稿平台,已成为企…

SoulX-Podcast 本地部署与WebUI体验教程(支持方言播客生成)

SoulX-Podcast 本地部署与WebUI体验教程(支持方言播客生成) 关键词:SoulX-Podcast、AI播客生成、TTS、多说话人对话、方言支持、Gradio WebUI 一、项目简介 SoulX-Podcast 是 Soul AI Lab 团队开源的一个高保真播客生成推理代码库&#xff0c…

亲测好用!9款AI论文平台测评:研究生毕业论文必备

亲测好用!9款AI论文平台测评:研究生毕业论文必备 2026年AI论文平台测评:为何值得一看 在当前学术研究日益数字化的背景下,研究生群体对高效、可靠的论文辅助工具需求愈发迫切。无论是选题构思、文献检索,还是内容撰写与…

04.深入闭包和js函数的this指向跟规则

闭包的内存泄漏测试 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

04.深入闭包和js函数的this指向跟规则

闭包的内存泄漏测试 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…