编程指南包含如何使用Direct3D 11可编程管道科学地为游戏和桌面应用程序创建实时3D图形的信息。

  • 计算着色器
  • 动态渲染链接
  • 多线程
  • 曲面细分
  • 功能的完整列表

计算着色器

计算着色器允许在GPU上面并行处理,计算着色器是为通用数据并行处理操作而设计的可编程着色器。它在处理输入输出的方式上和其他可编程着色器(顶点、像素、几何体)相似。计算着色器集成到Direct3D中,可以通过Direct3D设备访问。计算着色器可以通过Direct3D设备直接与图形着色器共享内存资源,然而,它并不直接连接到其他着色器阶段。

计算着色器是为大众市场应用程序设计的,当API(及其相关软件堆栈)和CPU之间的转换成本将消耗太多开销时,这些应用程序将以交互速率执行计算。

一个计算着色器有它自己的状态集。计算着色器不一定强制1-1映射到输入记录(如顶点着色器)或输出记录(如像素着色器)。图形着色器的一些特性得到了支持,但是为了添加新的特定于计算的特性,已经删除了其他特性。

为了支持特定于计算的特性,有几种新的资源类型可用,比如读/写缓冲区、纹理和结构化缓冲区。

有关更多信息,请参见计算着色器概述。

动态渲染链接

渲染系统在管理着色器时需要处理各种各样的复杂性,同时提供优化着色器代码的最大可能机会。当您考虑到需要跨广泛的可用硬件配置支持呈现场景中的各种不同材料时,这将成为一个更大的挑战。为了解决这些挑战,着色器开发人员通常采用两种通用方法中的一种。要么创建功能齐全的“超级着色器”,以牺牲一些性能的灵活性,或专门为每个几何流创建单独的着色器,材料类型或轻型组合所需。

超级着色器通过使用不同的预处理器定义重新编译相同的着色器来处理这个组合问题,而后一种方法使用了蛮力开发人员的能力来达到相同的目的。对于现在必须在游戏和资产管道中管理数千种不同着色器排列的开发人员来说,着色器排列激增常常是一个问题。

Direct3D 11和着色器模型5引入了面向对象的语言构造,并提供了着色器链接的运行时支持,以帮助开发人员处理这些开发问题。

有关更多信息,请参见动态链接。

多线程

由于场景图遍历、对象排序和物理模拟等代价高昂的活动,许多图形应用程序都是cpu绑定的。与此同时,多核系统正变得越来越普遍。因此,Direct3D 11改进了它的多线程支持,以支持多个CPU线程和D3D11图形api之间的有效交互。

Direct3D 11支持以下功能来支持多线程:

  • 在单独的线程中创建并发对象——使对象创建入口点成为自由线程,使得许多线程能够同时执行对象创建。例如,应用程序现在可以在一个线程上编译着色器或加载纹理,而在另一个线程上执行渲染。
  • 在多个线程上创建命令列表——命令列表是一个记录的图形命令序列。使用Direct3D 11,可以在多个CPU线程上创建命令列表,从而支持在多个线程上并行遍历场景数据库或物理处理,从而释放主呈现线程,将命令缓冲区分配给硬件。

有关更多信息,请参见多线程。

曲面细分

曲面细分可以用来渲染单个模型的不同层次的细节,生成更精确的几何模型,这取决于场景所需的细节级别。在细节级别允许较低的几何模型的场景中,这一点非常重要,因为这会减少在呈现过程中消耗的内存带宽。

在Direct3D中,GPU上实现了曲面细分,从粗糙的(不太详细的)输入块计算更平滑的曲面。每个(四面或三角形)贴片面被细分为更小的三角形面,以便更好地逼近所需的表面。

有关在图形管道中实现曲面细分的信息,请参阅曲面细分概述。

功能的完整列表

这是Direct3D 11中功能的完整列表。

  • Direct3D 11可以通过在创建设备时指定一个特性级别在底层硬件上运行。
  • 曲面细分
    • 壳着色器
    • 域着色器
  • 多线程
    • 多线程 资源/着色器/对象创建
    • 多线程显示队列创建
  • 着色器特性
    • 可寻址资源——纹理、常量缓冲区和采样器
    • 其他资源类型,如读/写缓冲区和纹理
    • 子程序
    • 计算着色器-----一种着色器,设计用于加速计算,通过在几个软件线程或线程组之间划分问题空间,并在着色器寄存器之间共享数据,以显著减少输入着色器所需的数据量,可以显著加快计算速度。计算着色器可以显著改进的算法包括后处理、动画、物理和人工智能
    • 几何着色器
      • 实例化----允许几何体着色器输出最多1024个顶点,或者实例和最多1024个顶点的任意组合(每个顶点最多32个实例)。
    • 像素着色器
      • 覆盖范围作为PS输入
      • 可编程插值输入-能够评估像素内的属性,在任何地方的多采样网格
      • 质心的定义
    • 纹理
    • 大内存支持
    • 流输出的改进
    • 只读深度或模板视图

    • 着色器模型5(Shader Model 5)

Direct3D 11 特性(一)相关推荐

  1. Direct3D 11.1新特性曝光

    Windows 8 developer preview不但向开发者提供了Win8和VS2011的预览,还在其中隐藏了之前没有宣布过的Direct3D 11.1.现在,D3D11.1的初期文档也出现在M ...

  2. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  3. Import Changes from Direct3D 11 to Direct3D 12

    译者:林公子 出处:木木的二进制人生 转载请注明作者和出处,谢谢! 这是微软公布的Direct3D 12文档的其中一篇,此翻译留作学习记录备忘,水平有限,错漏难免,还望海涵. 原文链接是https:/ ...

  4. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  5. Practical Rendering and Computation with Direct3D 11学习笔记(1.4)

    1.4 Interfacing with Direct3D 本节主要介绍Direct3D11两个最主要的接口,Device和Context. 1.4.1 Device Device和Device co ...

  6. Direct3D 11 总结 —— 4 绘制三角形

    介绍 本文主要介绍如何使用 direct3D 11 绘制三角形. pipeline 介绍 从 msdn 的文章,可以获得 direct3D 的 pipeline 如下图所示,对于本文只需要设置红框内的 ...

  7. g++编译c++11特性 的.cc文件

    写一个.cc文件,其中抱哈std::lock_guard以及std::thread等c++11特性,开始使用gcc编译,过程中出现如下问题 gcc test_lock.cc -o test_lock ...

  8. 《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

    1.3 C++11特性的分类 从设计目标上说,能够让各个特性协同工作是设计C++11/0x中最为关键的部分.委员会总希望通过特性协作取得整体大于个体的效果,但这也是语言设计过程中最困难的一点.因此相比 ...

  9. Direct3D 11 Tutorial 4: 3D Spaces_Direct3D 11 教程4:3D空间

    概述 在上一个教程中,我们在应用程序窗口的中心成功渲染了一个三角形. 我们没有太注意我们在顶点缓冲区中拾取的顶点位置. 在本教程中,我们将深入研究3D位置和转换的细节. 本教程的结果将是渲染到屏幕的3 ...

最新文章

  1. 【机器学习】解决中小微企业的信贷决策问题(一)
  2. 客户就可以查看到货物签收信息
  3. linux粘着位的使用(t权限)
  4. bugku-杂项 听首音乐
  5. LVS三种请求转发方式和八种调度算法简介
  6. Eclipse-报错:Could not create the Java virtual machine
  7. 使用批处理build vs2005的工程
  8. 酒店管理系统-需求说明书
  9. 交换机芯片技术知多少
  10. 一个字等于多少个字节?
  11. 1 k 1 k2c语言,一张图告诉你斐讯路由器K1S、K2,K2C的区别
  12. 深度学习与人工智能书籍推荐(从小白到大神)
  13. 图像算法学习 - 计算图像均方差(MES),峰值信噪比(PSNR)
  14. 基于STM32F103RCT6的二维码显示实验
  15. Android百日程序:绘画程序-画手指路径
  16. 无法启动此程序因为计算机丢失dtlui,用360重装大师重装系统后开机提示计算机中丢失DTLUI.dll? 爱问知识人...
  17. OSChina 周四乱弹 ——老司机的幼年日常
  18. 基于hi3531、ffmpeg、x264的h264压缩
  19. 显示器基础介绍、频率问题
  20. Servlet-发送电子邮件

热门文章

  1. 产品经理跨部门沟通的3点经验
  2. 数据结构与算法(b站老甲鱼)
  3. Multisim基础 元器件的旋转
  4. 我们的目标是星辰大海
  5. 云计算学习素材框架,msyql高级操作课件
  6. ubuntu 安装docker私服
  7. 人脸识别 无法打开相机 笔记本_window10 hello 人脸识别无法启动相机的问题
  8. CleanMyMac X 汉化简体中文版(Mac清理软件)
  9. 有关Eclipse的使用以及远端服务器部署的总结
  10. VxWorks在EasyARM2200和SmartARM2200上的移植zz