DirectStorage

利用 NVMe 加速游戏加载
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 图形/图像处理
软件类型 开源软件
地区 不详
投 递 者 钮才哲
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DirectStorage 是一项旨在让游戏充分利用高速存储(例如 NVMe SSD)的功能,它可以以最小的 CPU 开销提供每秒数 GB 的小(例如 64kb)数据读取。

使用传统的基于 ReadFile 的 IO 可以使驱动器饱和,但随着单个读取大小的减小,CPU 开销会非线性增加。此外,大多数游戏选择将其资产压缩存储在磁盘上,以减少安装占用空间,这些资产在加载时会即时解压缩。随着带宽的增加,这种 CPU 开销变得越来越昂贵。

DirectStorage for Windows 是一个 API,允许游戏开发人员充分发挥高速 NVMe 驱动器来加速游戏资产加载的过程,诸如 Xbox Series X|S 之类的游戏机通过将这些压力卸载到硬件来解决这些问题——利用 NVMe 硬件队列来管理 IO 和硬件加速解压缩。

Xbox 上已经存在 DirectStorage API,为了便于在 Xbox 和 Windows 之间移植游戏,这两个 API 尽可能相似。

DirectStorage 仅支持读取操作,可以在开发人员指南中找到一些很好的入门信息。

 

API 示例

Samples 目录包含演示如何使用 DirectStorage API 的示例代码。

  1. HelloDirectStorage:这个基本示例通过读取文件的内容并使用 DirectStorage 将其写入 GPU 上的缓冲区,提供了一种快速简便的方法来熟悉 DirectStorage 运行时。

  2. BulkLoadDemo:这演示了使用 DirectStorage、GPU 解压和自定义 CPU 解压。

  3. GpuDecompressionBenchmark:此示例提供了一种快速查看 DirectStorage 运行时解压缩性能的方法,方法是读取文件的内容,对其进行压缩,然后以多种方式解压缩,同时测量带宽和 CPU 使用率。使用 GPU 和 CPU 执行解压缩以进行比较。

 

 相关资料
  • 本文向大家介绍Redis利用Pipeline加速查询速度的方法,包括了Redis利用Pipeline加速查询速度的方法的使用技巧和注意事项,需要的朋友参考一下 1. RTT Redis 是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下 Redis 客户端执行一条命令分为如下四个过程: 发送命令 命令排队 命令执行 返回结果 客户端向服务端发送一个查询请求,并监听Soc

  • 我使用类a创建了一个简单的游戏,它扩展了SurfaceView并实现了Runnable。在游戏中,绘图是在公共空运行内完成的。activity一发射就会被线程锁定。游戏需要很多时间(有时10-15秒)来加载。以及当游戏暂停(thread.join())和恢复(thread=新线程(this);thread.start())时,都需要太多的时间。是什么原因导致游戏加载缓慢?解决办法是什么?

  • 我需要提高游戏屏幕加载时间的Android游戏,使用LibGdx游戏引擎。我已经实现了一些类(ImageProvider和SoundManager),它们负责预加载游戏的资产和音频部分。所以,问题是我如何加载这些游戏资源而不影响游戏屏幕之间的加载时间? 我在网上搜索了这个问题,在Stack上发现了一些类似的问题。 如何减少libgdx中所有资产的加载时间 LibGDX中的AssetManager

  • 没笔试,直接进的面 没一点准备,两天收到了感谢信。面的还行但寄了,难以理解。 ———————————— 1、自我介绍 2、介绍实习你做的工作 3、为什么觉得最初的想法不好玩(指的是seed实习时产出的创意) 游戏性不高 4、聊了聊游戏性 5、除了游戏性之外,还有什么让玩家觉得好玩或者不好玩的点 给玩家的体验 6、哈迪斯与fps游戏带给你的体验 哈迪斯聊了带给玩家“爽快”战斗体验的点   fps聊了

  • 我有一个老旧的,被遗忘的,Java的游戏旧西门子手机,我想玩一次。但我再也没有电话了。所以我一直在努力模仿它。但不管用。 Kemulator删除此错误: KEmulator V1.0.0正在运行... 启动MIDlet类:Incubus 线程“Thread-6”java.lang.noClassDeffounder异常:com/siemens/mp/ga me/GraphicObject 在Inc