大型3d游戏资源加载三步曲(硬盘-amp;gt;内存-amp;gt;显存)
做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制。现在一般都是再开一个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;显存)相关推荐
- 大型3d游戏资源加载三步曲(硬盘 内存 显存)
http://blog.csdn.net/fuzb/article/details/2084362 做过游戏的人都知道游戏的资源非常庞大,需要有一个好的后台预加载机制.现在一般都是再开一个I/O线程, ...
- Unity上架苹果商店游戏资源加载的问题被拒4.2.3
由于游戏资源加载的问题被4.2.3拒绝的解决方案 方案一: 加一个下载资源说明.然后改一下逻辑.启动app可以正常进去,然后提醒用户在你进去体验的初期,我们会继续在Wi-Fi环境下继续下载app需要的 ...
- CocosCreator游戏资源加载assetManager
1.资源AssetBundle包(简称ab包): ab包的作用:文件夹配置成ab包后,可以用引擎的资源加载接口加载文件夹内的资源 每个文件夹都可以设置成ab包,在creator编辑器中这样设置: 两个 ...
- Unity游戏开发——新发教你做游戏(三):3种资源加载方式
文章目录 一.前言 二.Unity的目录结构规范 1.Resources(不是很推荐把资源放这个目录) 2.RawAssets(存放生资源) 3.GameRes(存放熟资源) 4.StreamingA ...
- android游戏加载,Android 游戏引擎libgdx 资源加载进度百分比显示案例分析
因为案例比较简单,所以简单用AndroidApplication -> Game -> Stage 搭建框架 一.主入口,无特殊 public class App extends Andr ...
- libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源
目录 前言 加载资源 libGDX资源目录说明 配置各个平台启动器 desktop模块启动器设置 Android模块启动器设置 加速度计和指南针 html模块启动器设置 编写加载资产代码 1. 加载图 ...
- unity3d 自动变化大小_【Unity游戏开发】AB学习(三)--加载AB和实例化操作对应的内存变化...
了解一下加载AB和实例化操作对应的内存变化,有助于我们更好的理解内存管理 很经典的对称造型,用多少释放多少. 这是各阶段的内存和其他数据变化 说明: 初始状态 AssetBundle.Load文件后 ...
- Layaair 3D资源加载(Unity3D 导出资源)
Layaair 3D资源加载 layaair 预加载3D资源(Unity3D 导出资源) 和 2D 资源还是有些区别的. 2D资源的预加载 https://blog.csdn.net/nicepa ...
- unity 通过resouce加载图片_Unity游戏开发笔记-资源管理之资源加载
资源加载是游戏中非常重要也非常繁琐的的一部分,不合理的资源管理,必定回给游戏的内存带来非常大的压力,尤其是一些重度游戏,不但资源特别多,引用关系特别复杂.维护一个不会内存泄漏而且加载效率高的资源加载框 ...
最新文章
- 京东某员工因加班太多引女友不满,下定决心离职:不想被迫加班!
- linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法...
- 2.9 go mod 之本地仓库搭建
- JavaScript-jQuery事件
- 爬虫职业道德----查看Robots.txt
- Raid Level,该如何为Oracle存储选择才好?
- asp.net项目发布打包研究
- ios开发之验证你的服务器ATS是否PASS
- LG手机无法连接adb
- Mini-C编译器设计与实现 文档+任务书+评价表+PPT+项目源码
- 多省市房屋交易平台引入电子签章推动住房交易合同网签备案
- ArcGIS技巧】下载偏移影像后纠偏操作
- Unity C# compiler: CS0121: The call is ambiguous between the following methods or properties
- php 实现心芯图案,利用php输出不同的心形图案,php心形图案
- DataFrame上下或左右合并 pd.concat
- 一个新手对软件开发的理解(写自第一个项目--Linpop之后)
- 长短时记忆神经网络python代码_零基础入门深度学习(6) - 长短时记忆网络(LSTM)
- 气象接口返回图标_天气预报查询接口
- Linux——文本编辑器(Vi)详解介绍
- 5层因特网协议栈 和 7层OSI参考模型