zoukankan      html  css  js  c++  java
  • 教程:将应用迁移到 DirectX* 12 – 第 1 部分

    原文地址

    简介

    随着微软* 新版操作系统 Windows 10* 的发布,核心图形技术将升级到最新的 DirectX* 12。要帮助拥有 DirectX* 开发经验的程序员熟悉 DirectX* 12 并尽快着手开发游戏,微软*、英特尔® 和苏州蜗牛公司吸收了苏州蜗牛“武术之王”游戏所搭载的 PC DirectX* 12 的开发经验,合作编写了这篇白皮书。我们希望为所有热衷 DirectX* 技术的开发人员带来前沿的第一手材料。本白皮书的技术顾问是来自微软* 的资深制图专家兼 DirectX* 12 的项目经理 Jianye Lu。这三家公司的技术专家合作编写了所有章节。

    • 第 1 章:DirectX* 12 概述 - Yingguang Mei(微软*)
    • 第 2 章:DirectX 12 工具 - Yingguang Mei(微软*)
    • 第 3 章:从 DirectX 11 迁移到 DirectX 12 - Wenwei Lv(苏州蜗牛公司)
    • 第 4 章:DirectX 12 特性 - Sheng Guo(英特尔®)和 Wenwei Lv(苏州蜗牛公司)
    • 第 5 章:DirectX 12 优化 - Kai Wang(英特尔®)和 Wenwei Lv(苏州蜗牛公司)

    目前,本文是白皮书的第一个版本。我们正在不断丰富和更新本教程,并且特别希望能得到你们的建议和意见。以下是我们的联系方式:

    Yingguang Mei: yimei@microsoft.com
         Sheng Guo: sheng.guo@intel.com
         Wenwei Lv: lvww@snailgame.net

    目录

    引言。

    目录。

    第 1 章 DirectX* 12 概述

    1.1 DirectX* 12 概述

    1.1.1 DirectX* 12 的开发环境和硬件配置

    1.1.2 Direct3D 12

    1.2 Direct3D 12 的核心概念

    1.2.1 作品提交

    1.2.2 内存管理

    1.3 从 Direct3D 11 到 Direct3D12 出现的重大变化

    1.4 开发首款 DirectX* 12 程序

    第 1 章 DirectX* 12 概述

    DirectX* 是一种编程接口套件,微软*将其用于控制基本硬件及处理 Windows 操作系统平台上的多媒体任务(尤其是游戏和视频)。DirectX* API 被分成多个组件。不同组件内的 API 是独立的且单独进行更新,这确保了游戏只使用必要的功能。各组件都具有访问不同硬件的功能,这些硬件包括显卡、声卡、GPU 和其他配备标准接口的输入设备,诸如操纵杆和鼠标。

    1.1 DirectX* 12 概述

    DirectX* 12 主要包括以下组件:

    Direct2D:用于 2D 图形渲染。它是一种高性能矢量渲染库。

    DirectWrite:利用 Direct2D 应用来渲染字体和文本

    Direct3D:用于在 DirectX* 中构建所有 3D 显卡。API 获得了最多关注并且更新频率最高。

    XAudio2:低级别音频处理 API。

    XACT3:XAudio2 内置的高级音频处理 API。

    XInput:用于处理来自 Xbox* 游戏控制台等设备的所有输入。

    DirectCompute:新增到 DirectX*11 的新 API 集。GPU 用于执行通用多线程计算。

    1.1.1 DirectX* 12 的开发环境和硬件配置

    开发环境

    • 软件安装
      • Windows 10
      • Visual Studio 2013 + Update4 / Visual Studio 2015(配备了更出色的 DX12 调试工具)
      • DirectX* 12 SDK
    • 安装驱动程序
      • AMD 驱动程序
      • 英特尔® 驱动程序
      • NVIDIA* 台式机/移动驱动程序

    硬件配置

    • CPU:英特尔酷睿 i5-4670K
    • 内存:超过 16GB 内存
    • 显卡(支持特性级别 11.1 和更高版本):
      • NVIDIA*:GTX 970/980(超过 4GB 内存)/GTX TITAN(超过 4GB 内存)
      • AMD:R9 290(超过 4GB 内存)
      • 英特尔®:显卡内置在 CPU.HasWell 及更高版本。
    • 硬盘:1TB

    1.1.2 Direct3D 12

    Direct3D 是最重要的 DirectX* 组件。随着 DirectX* 12 的发布,Direct3D 也更新到最新一代 - Direct3D 12。相比之前的版本,Direct3D 12 更快、更高效且能够支持更丰富的场景、更多的对象、更多出色的特性,进而充分利用主流 GPU。

    更高效的性能
    Direct3D 12 提供了比平常低得多的硬件抽象层,这样,游戏和应用都能显著地提升 CPU 利用率和多线程负载平衡功能。Direct3D 12 允许游戏和应用自行管理内存。此外,使用 Direct3D 12 的新特性可显著地减少 GPU 开销并提升游戏和应用的演示效果。这些新特性包括:命令队列和列表、资源描述符表和管道状态对象等。此外,Direct3D 12 还支持许多新的管道渲染技术,如保守光栅化算法、立体平铺资源和光栅顺序视图。

    功能更强大的主机
    对于渲染功能,Direct3D 12 是 Direct3D 11 的一个超集。Direct3D 12 保留了 Direct3D 11 的渲染功能,同时在现代显卡的多核 CPU 和 GPU 上实现了更高性能,显著地提升了主机平台 API 的效率。基于 Direct3D 12,现代主机可确保充分利用所有 CPU 和 GPU 核心资源,以利用最强大的渲染潜力。

    更出色的工具
    Direct3D 12 为调试和分析 D3D 应用运行时间提供了更出色的 PIX 工具。除了跟踪许多有用的信息(如 API 调用和时间统计)、调试 GPU 上的着色器代码以及在代码中设置断点和调试,测试 Xbox* 应用的性能相比以前也有大幅提升。最新的 PIX 工具为 DirextX* 应用提供了完整的图形调试环境。

    1.2 Direct3D 12 的核心概念

    1.2.1 作品提交
    提交后,命令列表的执行与 CPU 是异步的。也就是说,程序向命令队列提交命令列表后,CPU 将直接返回到该程序,而不是等待执行命令,这就确保了 CPU 可以随时提交渲染命令列表。Direct3D 12 提供了可在 CPU 和 GPU 之间进行通信的同步原语,以便了解由 GPU 执行的渲染任务的状态。

    这类命令列表非常有效。API 命令被直接转换成原始 GPU 命令,可最大程度地减轻显示驱动程序的负担。这是一种呈现渲染的高性能方法。要获得这样的性能,在应用的最终发布版本中构建渲染命令列表时,显示驱动程序的核心程序应该只执行数量最少的错误检查工作。在开发过程中,您可以使用调试工具来确保渲染正确无误。为了方便输入验证、分析和调试,您也可以使用采用了 Direct3D 12 API 的调试层进行全面的状态检查,以便了解错误和警告(如“无效的渲染操作”错误和“不确定的渲染操作”警告等)。

    1.2.2 内存管理
    由 Direct3D 12 API 处理的数据存储在名为资源堆的内存对象中。

    资源堆可存在于本地图形内存或系统内存中。它具备一些特点,如配备一定数量的高速缓存以及由 CPU 或 GPU 进行访问。应用可通过使用由多种堆创建的 API 参数来控制属性以及资源堆内存的分配。

    在资源栈内,程序可以自由地分配纹理和缓冲等资源。这是相对轻型的操作。在现有资源堆中创建资源不会引起实际的内存分配操作。要让 GPU 正确访问这些资源,应用需要创建资源描述符视图,如:着色器资源视图或无序访问视图。

    要读取或写入 CPU 的资源堆内存,应用必须映射基于堆的资源,这样,CPU 才能进行访问。

    要确保 GPU 内存连续分配数据以及管道在 Direct3D 12 中正确运行,则通常可以采用环缓冲区或类似的技术。API 提供了同步原语,以确保这类管道正常运行。

    1.3 从 Direct3D 11 到 Direct3D12 发生的重大变化

    请在 MSDN 上查看以下网站,了解 Direct3D 12 和 Direct3D 11 之间的重要区别:
    https://msdn.microsoft.com/en-us/library/windows/desktop/dn899194(v=vs.85).aspx

    1.4 开发首款 DirectX* 12 程序

    请在 MSDN 上查看以下网站,了解如何创建基本的 Direct3D 12 组件:
    https://msdn.microsoft.com/en-us/library/windows/desktop/dn859356(v=vs.85).aspx

    即将推出:链接至以下章节

    第 2 章: DirectX 12 工具
    第 3 章:从 DirectX 11 迁移到 DirectX
    第 4 章: DirectX 12 特性
    第 5 章: DirectX 12 优化

  • 相关阅读:
    HDU3718 Similarity 最大权值匹配
    HDU2853 Assignment 最大权值匹配+简直是太神了
    HDU3488 Tour 再次感受到KM的强大
    ZOJ2575 Full of Painting 动态规划
    ZOJ2571 Big String Outspread 模拟
    POJ3565 Ants 空间点对不相交匹配最小权值匹配
    Fleury(弗罗莱)算法求欧拉路径
    HDU2426 Interesting Housing Problem 最大权值匹配不能完成匹配的处理
    POJ1392 Ouroboros Snake 欧拉回路
    HDU2255 奔小康赚大钱 最大权值匹配
  • 原文地址:https://www.cnblogs.com/IDZPRC/p/5275608.html
Copyright © 2011-2022 走看看