DirectX11基础 ---资源(Resource)

本文围绕渲染资源展开,介绍其如汽车装配线组件般重要,资源分为纹理和缓冲区两类。使用资源涉及C/C++和HLSL两个领域,使用时需绑定到管道。还阐述了DirectX的资源视图概念,有四种类型,部分资源绑定无需视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源的概述

如果您将呈现管道视为汽车装配线,那么资源将是所有进入装配线的组件,这些组件组合在一起创建汽车。当没有资源使用时,管道不能做任何事情,反之亦然。

资源的种类

在考虑如何构造算法时,我们可以使用多种不同的资源,每种类型都有不同的用例。通常,资源被分成两组——纹理(Texture)和缓冲区(Buffer)。纹理大致按其类型划分,可以创建为一维、二维和三维形式。缓冲区比较均匀,通常被认为是一维的
(尽管在某些情况下它们实际上是0维的,例如单个数据点)。尽管如此,仍然有很多种不同的缓冲区类型,包括顶点和索引缓冲区、常量缓冲区、结构化缓冲区、附加和使用缓冲区以及字节地址缓冲区。

使用语言

通常,使用资源有两个不同的领域一个来自C/C++,另一个来自HLSL。C/ c++主要关注创建资源并将它们绑定/解绑定到所需的位置。HLSL更关心实际操作和使用资源的内容。

使用资源

要使用资源,必须将资源绑定到管道。当一个资源被绑定到管道时,它可以用作数据输入、输出,或者两者兼而有之。这主要取决于它绑定到管道的位置和方式。
例如,作为 Input Assemble阶段(IA阶段) 的输入而绑定的顶点缓冲区显然是一个输入,作为渲染目标绑定到输出合并(output merge stage) 阶段2D纹理(2D Texture) 显然是输出。
但是,如果我们想在随后的渲染过程中使用输出的渲染目标内容,该怎么办?它也可以绑定到一个像素着色器(Pixel shader) 作为纹理资源(texture resource) ,以便在下一次渲染操作中采样。

资源视图

为了帮助运行时(和开发人员)确定资源的预期用途,DirectX提供了资源视图(Resource View) 的概念。当特定资源可以绑定到渲染管线中几个不同的渲染位置时,必须使用资源视图绑定它,该视图指定如何使用它。
有四种不同类型的资源视图:渲染目标视图(render target view)、深度/模板视图(depth stencil view)、着色器资源视图(shader resource view)和无序访问视图(unordered access view) 。前两个分别用于将渲染和深度目标绑定到管道。着色器资源视图有些不同,它允许在任何可编程着色器阶段绑定资源以供读取。无序访问视图也有一些不同,它允许将资源绑定为同时进行随机读写访问,但是只能在计算着色器(Compute shader)像素着色器(pixel shader) 阶段使用。
还有其他资源绑定类型不需要资源视图来绑定到管道。这些通常用于为单一目的创建的资源,如顶点缓冲区(vertex buffer)索引缓冲区(index buffer)常量缓冲区(constant buffer) ,并且资源的用途是明确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值