做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制。现在一般都是再开一个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. 京东某员工因加班太多引女友不满,下定决心离职:不想被迫加班!
  2. linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法...
  3. 2.9 go mod 之本地仓库搭建
  4. JavaScript-jQuery事件
  5. 爬虫职业道德----查看Robots.txt
  6. Raid Level,该如何为Oracle存储选择才好?
  7. asp.net项目发布打包研究
  8. ios开发之验证你的服务器ATS是否PASS
  9. LG手机无法连接adb
  10. Mini-C编译器设计与实现 文档+任务书+评价表+PPT+项目源码
  11. 多省市房屋交易平台引入电子签章推动住房交易合同网签备案
  12. ArcGIS技巧】下载偏移影像后纠偏操作
  13. Unity C# compiler: CS0121: The call is ambiguous between the following methods or properties
  14. php 实现心芯图案,利用php输出不同的心形图案,php心形图案
  15. DataFrame上下或左右合并 pd.concat
  16. 一个新手对软件开发的理解(写自第一个项目--Linpop之后)
  17. 长短时记忆神经网络python代码_零基础入门深度学习(6) - 长短时记忆网络(LSTM)
  18. 气象接口返回图标_天气预报查询接口
  19. Linux——文本编辑器(Vi)详解介绍
  20. 5层因特网协议栈 和 7层OSI参考模型

热门文章

  1. 关于微前端,你想知道的都在这!
  2. 外贸线上线下开发客户的渠道干货分享
  3. 支付宝支付 App支付以及网页支付接入流程
  4. 一个不错的用户体验地图
  5. materialize icons 本地布署方法
  6. 微信浏览器打开支付宝支付页面
  7. 独辟蹊径的编程思维——“拿来主义”编程
  8. 使用FSL对DTI进行概率纤维追踪(GPU版本)
  9. MMEngine理解
  10. DTU电表远程抄表应用方案