文件名称:顶点缓冲-python实现pdf转换成word/txt纯文本文件
文件大小:5.52MB
文件格式:PDF
更新时间:2024-07-08 20:40:42
DX11 Direcx 图形学
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