-
顶点缓冲-python实现pdf转换成word/txt纯文本文件下载
资源介绍
6.2 顶点缓冲
为了让 GPU 访问顶点数组,我们必须把它放置在一个称为缓冲(buffer)的特殊资源
容器中,该容器由 ID3D11Buffer 接口表示。
用于存储顶点的缓冲区称为顶点缓冲(vertex buffer)。Direct3D 缓冲不仅可以存储数
据,而且还说明了如何访问数据以及数据被绑定到图形管线的那个阶段。要创建一个顶点
缓冲,我们必须执行以下步骤:
1.填写一个 D3D11_BUFFER_DESC 结构体,描述我们所要创建的缓冲区。
2.填写一个 D3D11_SUBRESOURCE_DATA 结构体,为缓冲区指定初始化数据。
3.调用 ID3D11Device::CreateBuffer 方法来创建缓冲区。
D3D11_BUFFER_DESC 结构体的定义如下:
typedef struct D3D11_BUFFER_DESC{
UINT ByteWidth;
D3D11_USAGE Usage;
UINT BindFlags;
UINT CPUAccessFlags;
UINT MiscFlags;
UINT StructureByteStride;
} D3D11_BUFFER_DESC;
1.ByteWidth:我们将要创建的顶点缓冲区的大小,单位为字节。
2.Usage:一个用于指定缓冲区用途的 D3D11_USAGE 枚举类型成员。有 4 个可选
值:
(a)D3D10_USAGE_DEFAULT:表示 GPU 会对资源执行读写操作。在使用映射 API
(例如 ID3D11DeviceContext::Map)时,CPU 在使用映射 API 时不能读写这种资源,但它能
使用 ID3D11DeviceContext::UpdateSubresource。ID3D11DeviceContext::Map 方法会在 6.14
节中介绍。
(b)D3D11_USAGE_IMMUTABLE:表示在创建资源后,资源中的内容不会改变。这样
可以获得一些内部优化,因为 GPU 会以只读方式访问这种资源。除了在创建资源时 CPU 会
写入初始化数据外,其他任何时候 CPU 都不会对这种资源执行任何读写操作,我们也无法
映射或更新一个 immutable 资源。
(c)D3D11_USAGE_DYNAMIC:表示应用程序(CPU)会频繁更新资源中的数据内容
136 / 351