6. 资源与描述符

在渲染处理的过程中,GPU 可能会对资源进行读和写。

在发出绘制命令之前,我们需要将与本次绘制调用相关的资源绑定到渲染流水线上。部分资源可能在每次绘制调用时都会有所变化,所以我们也就要每次按需更新绑定。

GPU资源并非直接与渲染流水线相绑定,而是要通过一种名为描述符(descriptor)的对象来对它间接引用。可以把描述符视为对GPU的资源进行描述的轻量级结构。实际上即为一个中间层。

除了指定资源数据,描述符还会为GPU解释资源:告知Direct3D某个资源将如何使用(即此资源将被绑定在流水线的哪个阶段上),而且我们可借助描述符来指定欲绑定资源中的局部数据。如果某个资源在创建的时候采用了无类型格式,那么我们就必须在为它创建描述符时指明其具体类型。

视图(view)与描述符(descriptor)是同义词。

常用的描述符如下:

  • CBV/SRV/UAV

    • 常量缓冲区视图/描述符(constant buffer view/descriptor)
    • 着色器资源视图/描述符(shader resource view/descriptor)
    • 无序访问视图/描述符(unordered access view/descriptor)
  • 采样器描述符(sampler):用于纹理贴图
  • RTV描述符:渲染目标视图资源(render target view)
  • DSV描述符:深度/模板视图资源(depth/stencil view)

描述符堆(descriptor heap)中存有一系列描述符(描述符数组)。我们为每一种类型的描述符都创建出单独的描述符堆。

我们能用多个描述符来引用同一个资源。例如,可以通过多个描述符来引用同一个资源中不同的局部数据。一种资源可以绑定到渲染流水线的不同阶段。因此,对于每个阶段都需要设置独立的描述符。

创建描述符的最佳时机为初始化期间。最好不要在运行时(runtime)才创建描述符。除非当确实需要用到无类型资源所带来的灵活性时(即根据不同的视图对同一种数据进行多种不同解释的能力)。

DirectX12资源与描述符相关推荐

  1. dx12龙书 描述符根参数常量缓冲区

    ⭐描述符&根参数 知识所在龙书章节: P83~84 资源与描述符 P201~206 常量缓冲区描述符 根签名 描述符表 P262~271 根签名 ①资源与描述符 GPU资源并非直接与渲染流水线 ...

  2. 文件描述符到底是啥?

    在平时的 Android 开发中,你与文件描述符打过交道吗?一些知识点会涉及到文件描述符,比如: mmap 函数的文件描述符参数 epoll 机制对文件描述符的限制 这时,如果让你说说对文件描述符的了 ...

  3. DirectX12_初识之根签名、显存管理、资源屏障、栅栏同步、描述符与描述符堆、捆绑包

    一.显卡架构与存储管理 现代的GPU上是有很多可以并行执行命令的引擎的,如下图所示(可参照官网介绍): 它很形象的说明了一个GPU上至少有三大类引擎,一个是复制引擎(Copy engine).一个是计 ...

  4. linux文件描述符与标识符,文件描述符fd

    这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...

  5. Linux进程描述符task_struct结构体简析

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个 ...

  6. linux 输出重定向_Linux--文件描述符和stdin,stdout,stderr

    基本概念 1. 文件描述符 总览: 当一个程序成功向操作系统请求访问一个打开的文件, 内核会返回一个指向内核中全局文件表(global file table)中的入口点(entry)的文件描述符. 文 ...

  7. BEBLID:增强的高效局部图像特征描述符

    (本文转载自:当SLAM遇见小王同学) 在前不久发布的OpenCV4.5中更新了很多新特性: 从4.5版本开始,OpenCV将正式使用Apache2协议,从而避免专利算法带来的潜在纠纷 SIFT专利到 ...

  8. [转帖]linux文件描述符文件/etc/security/limits.conf

    linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...

  9. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

    转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

最新文章

  1. java软件测试黑盒工具,软件测试中的抽象层次系列之一 – 黑盒与白盒
  2. ios alertview 链接_iOS-MobLink集成流程
  3. Ubuntu18 的日常
  4. HotSpot源码(一):Docker与虚拟机的区别,class字节码解析,linux内核源码下载地址,Yacc与Lex快速入门
  5. 【论文阅读】Learning Traffic as Images: A Deep Convolutional ... [将交通作为图像学习: 用于大规模交通网络速度预测的深度卷积神经网络](2)
  6. Android6 0权限机制(一):介绍
  7. filter函数使用出现的问题
  8. From the overall look and feel
  9. “软考”遗失试卷全部追回 相关责任人接受审查
  10. 锁定关闭计算机快捷键,锁定电脑快捷键怎么更改?
  11. windows环境 java jdbc 连接impala (kerberos认证)
  12. 【友盟+】营销大数据论坛完美收官:数据驱动营销智能
  13. AI带你走进P图新时代
  14. firefox装在linux_linux下安装firefox
  15. Redhat linux命令行连接wifi
  16. SSM三大框架整合(Spring+SpringMVC+MyBatis)
  17. Linux下轻量级数据库-SQLite3(嵌入式设备)
  18. 别学AI了!90%的人编程能力差,其实都是输在了这点上!
  19. 失望苦闷 喝一杯乌龙茶
  20. 快手去水印解析获取源标题、作者、头像、封面图以及源视频下载地址

热门文章

  1. [思想连载4]思想就像种子,种什么,就会生长什么.
  2. 2020中兴捧月算法大赛-阿尔法(MOT)赛道--赛后总结
  3. vue3.0(第九篇)vue3.0可用的组件库
  4. Flutter 中文文档:视频的播放和暂停
  5. MapReduce 的体系结构
  6. 阿里云搭建ThinkPHP框架
  7. [生存志] 第133节 常忆西汉贤名录
  8. C++课程设计--简易画图程序(MFC)
  9. JavaSwing_5.6: 系统托盘(System Tray)
  10. Sentinel(一)Linux搭建Sentinel 控制台环境搭建及使用介绍