http://blog.csdn.net/fuzb/article/details/2084362

做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制。现在一般都是再开一个I/O线程,主线程有I/O需求的话,将信息推入队列,I/O辅助线程从队列读出需求,从磁盘加载I/O,加载好后设置好对应状态.

但是随着游戏越来越大,单纯的这阶段处理好已经不能够满足要求,从内存到显存的这一个阶段占据的比重也越来越大,这里是再次总结强调一次.

以下举例如果设计到平台,以windows为例

1) I/O: Memory-mapped I/O技术.Memory-mapped I/O跟一般的I/O不同,有它的好处也有它的坏处,好处在:

Memory-mapped I/O不需要将资源加载到大家共用的虚拟内存文件中(pagefile.sys).而是直接把数据所在的硬盘空间映射到进程的虚拟地址空间. 这将急剧加速磁盘文件的加载数据(windows加载exe/dll就是把exe/dll直接映射进来的,记住,这在加载的第一次很块,也就那一次).

Memory->mapped使用的时候要注意不要超出进程的虚拟内存空间. 另外也页面对齐,这个在msdn上有说明.

Memory-Mapped 也有一些缺点,这个是os设计实现的. 一般的虚拟内存是Page Directory--> PageTables-->Physical Pages,而Memory-Mapped有四层,PageTables-->PageTables-->(mapped机制专有)-->Physical Pages.多了一层,就多了一些中断.所以会更慢一点,但对于上层应用来说,基本可以忽略.所以这个技术可以用.

2) 随着游戏的资源越来越多,也随着显存越来越多,管理的必要性逐渐体现出来.很显然,这个也是很耗时的,所以也要放一个辅助线程.

大型3d游戏资源加载三步曲(硬盘 内存 显存)相关推荐

  1. 大型3d游戏资源加载三步曲(硬盘-amp;gt;内存-amp;gt;显存)

    做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制.现在一般都是再开一个I/O线程,主线程有I/O需求的话,将信息推入队列,I/O辅助线程从队列读出需求,从磁盘加载I/O,加载好后设置 ...

  2. Unity上架苹果商店游戏资源加载的问题被拒4.2.3

    由于游戏资源加载的问题被4.2.3拒绝的解决方案 方案一: 加一个下载资源说明.然后改一下逻辑.启动app可以正常进去,然后提醒用户在你进去体验的初期,我们会继续在Wi-Fi环境下继续下载app需要的 ...

  3. CocosCreator游戏资源加载assetManager

    1.资源AssetBundle包(简称ab包): ab包的作用:文件夹配置成ab包后,可以用引擎的资源加载接口加载文件夹内的资源 每个文件夹都可以设置成ab包,在creator编辑器中这样设置: 两个 ...

  4. Unity游戏开发——新发教你做游戏(三):3种资源加载方式

    文章目录 一.前言 二.Unity的目录结构规范 1.Resources(不是很推荐把资源放这个目录) 2.RawAssets(存放生资源) 3.GameRes(存放熟资源) 4.StreamingA ...

  5. android游戏加载,Android 游戏引擎libgdx 资源加载进度百分比显示案例分析

    因为案例比较简单,所以简单用AndroidApplication -> Game -> Stage 搭建框架 一.主入口,无特殊 public class App extends Andr ...

  6. libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源

    目录 前言 加载资源 libGDX资源目录说明 配置各个平台启动器 desktop模块启动器设置 Android模块启动器设置 加速度计和指南针 html模块启动器设置 编写加载资产代码 1. 加载图 ...

  7. Layaair 3D资源加载(Unity3D 导出资源)

    Layaair 3D资源加载 layaair 预加载3D资源(Unity3D 导出资源)  和  2D 资源还是有些区别的. 2D资源的预加载 https://blog.csdn.net/nicepa ...

  8. unity 通过resouce加载图片_Unity游戏开发笔记-资源管理之资源加载

    资源加载是游戏中非常重要也非常繁琐的的一部分,不合理的资源管理,必定回给游戏的内存带来非常大的压力,尤其是一些重度游戏,不但资源特别多,引用关系特别复杂.维护一个不会内存泄漏而且加载效率高的资源加载框 ...

  9. Unity中的三种资源加载和卸载

    前言 内容转载自: https://www.cnblogs.com/zhoujiangyue/articles/7066070.html. Unity中三种资源加载方式: 1.静态引用.具体操作:创建 ...

最新文章

  1. python太阳花绘图_python中turtle如何画太阳花?
  2. 自己整理的shell笔记
  3. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( K-Means 方法缺陷 | 基于密度聚类原理及概念 | ε-邻域 | 核心对象 | 直接密度可达 | 密度可达 | 密度连接 )
  4. QT Creator介绍
  5. 日志规范之slf4j整合JDK14以及Simple的使用
  6. django 修改html无变化,Django Pycharm 修改html后立即刷新页面
  7. 不用数组,解决众数问题(前提 :众数出现的次数必须大于n/2)
  8. Spring Boot笔记-对dto数据传输对象及物联网公司主创建主键的认识
  9. java限制一个接口的执行时间_Java 并发编程:任务执行器 Executor 接口
  10. ssms脚本生成缓慢_使用SSMS和Azure Data Studio生成数据脚本
  11. ubuntu 12.04 3D特效
  12. 建模步骤_数学建模的基本步骤
  13. 路由器温度测试软件,[折腾] 夏天别热晕了!自制光猫/路由器散热支架(更新温度测试)...
  14. SonarQube代码扫描工具
  15. 全国各地货运量(全国与各省级指标,2005-2019数据分析对比)
  16. 计算机wmi配置错误,系统没有WMI服务、WMI错误修复办法
  17. 日知录-章0:当我们在谈论大数据时,我们在谈什么?
  18. Qt的简单应用:五子棋游戏
  19. 淘宝API 获取购买到的商品订单详情
  20. MySQL存储引擎 innodb_flush_log_at_trx_commit, sync_binlog,(双一标准+刷写策略)Innodb_flush_method

热门文章

  1. 今日芯声 | 阿里年会高管合照曝光,最辣眼睛的竟然是他!
  2. Putty,PuttyCM,WinSCP组合拳
  3. 01背包问题-回溯法
  4. 路由器刷固件 | MERCURY-MW305R | 路由器实现锐捷认证
  5. 手工数据恢复你也行:FAT文件系统DBR损坏后的恢复
  6. linux无线网卡连不上网,Ubuntu 16.04下无线网卡无法正常连网
  7. Retrofit使用SimpleXmlConverterFactory解析xml之无坑版(无坑有效期:暂定17年底)
  8. 关于制作物联网APP的问题
  9. 全能扫地机器人的想法
  10. 高德mesh添加纹理渐变颜色