做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制。现在一般都是再开一个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游戏资源加载三步曲(硬盘-amp;gt;内存-amp;gt;显存)相关推荐

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

    http://blog.csdn.net/fuzb/article/details/2084362 做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制.现在一般都是再开一个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. unity3d 自动变化大小_【Unity游戏开发】AB学习(三)--加载AB和实例化操作对应的内存变化...

    了解一下加载AB和实例化操作对应的内存变化,有助于我们更好的理解内存管理 很经典的对称造型,用多少释放多少. 这是各阶段的内存和其他数据变化 说明: 初始状态 AssetBundle.Load文件后 ...

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

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

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

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

最新文章

  1. windows搭建SVN服务MD版
  2. mysql的set架构_MYSQL 整体架构浅析
  3. pcb钻孔披锋改善报告_铜基板的小孔加工改善研究
  4. C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案
  5. Klevgrand DAW LP for Mac(乙烯基唱片播放器模拟插件)
  6. 获取浏览器的User Anent及判断微信浏览器
  7. 【SQL Server 2016】【SSMS 17】安装
  8. 微信公众号调用腾讯地图api
  9. mac使用Alfred搜索外接移动硬盘失败的解决方法
  10. mac 爱普生打印机驱动_EPSON 打印机软件
  11. android 可逆加密,AndroidMD5加密算法(可逆)
  12. VS2013 下载链接
  13. 什么是生命?演讲原稿
  14. mysql索引,索引结构,索引类型,索引失效
  15. Pycharm, 生成可执行文件,Unhandled exception in script报错
  16. 冰刃 IceSword1.22 中文版
  17. 华为设备接口视图_华为交换机的三种视图
  18. 视频教程-C++编程FFMpeg(QT5+OpenCV)实战--实时美颜直播推流-C/C++
  19. Calcite-学习笔记(入门篇)
  20. 3ds Max 2014以及低版本在高分辨率带DPI缩放设置的应用程序设置

热门文章

  1. 【报告分享】2021年Q2数字经济回顾-易观智库(附下载)
  2. What is the rationale for the `/usr` directory?
  3. 习题3-6 纵横字谜的答案 UVa232
  4. 华为手机助手安卓版_西瓜助手安卓版下载-西瓜助手app手机版下载v1.6.3[系统工具]...
  5. 最新vue2.x仿饿了么app 商家页面 项目总结
  6. 电脑通过CH340-cp2102与ESP01S串口调试步骤及错误解决办法
  7. linux下的cpu温度监控软件 lm-sensors
  8. 数据结构学习笔记(2)之数据结构绪论
  9. 内联检重秤的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. C#设计一个简单的计算器,实现两个数的加,减,乘,除,求幂等计算,运行效果如下图所示: