IDirect3DDevice9::CreateIndexBuffer 方法 (d3d9.h)

创建索引缓冲区。

语法

HRESULT CreateIndexBuffer(
  [in]          UINT                  Length,
  [in]          DWORD                 Usage,
  [in]          D3DFORMAT             Format,
  [in]          D3DPOOL               Pool,
  [out, retval] IDirect3DIndexBuffer9 **ppIndexBuffer,
  [in]          HANDLE                *pSharedHandle
);

参数

[in] Length

类型: UINT

索引缓冲区的大小(以字节为单位)。

[in] Usage

类型: DWORD

使用情况可以为 0,这表示没有使用值。 但是,如果需要使用,请使用一个或多个 D3DUSAGE 常量的组合。 最好将 CreateIndexBuffer 中的 usage 参数与 IDirect3D9::CreateDevice 中的行为标志进行匹配。 有关详细信息,请参阅“备注”。

[in] Format

类型: D3DFORMAT

D3DFORMAT 枚举类型的成员,描述索引缓冲区的格式。 有关详细信息,请参阅“备注”。 有效设置如下:

说明
D3DFMT_INDEX16 每个索引为 16 位。
D3DFMT_INDEX32 每个索引为 32 位。

[in] Pool

类型: D3DPOOL

D3DPOOL 枚举类型的成员,描述要在其中放置资源的有效内存类。

[out, retval] ppIndexBuffer

类型: IDirect3DIndexBuffer9**

指向 IDirect3DIndexBuffer9 接口的指针的地址,表示创建的索引缓冲区资源。

[in] pSharedHandle

类型: 句柄*

此参数可用于 Direct3D 9 for Windows Vista 共享资源;将其设置为 NULL 以不共享资源。 对于早于 Windows Vista 的操作系统,在 Direct3D 9 中不使用此参数;将其设置为 NULL

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、D3DERR_OUTOFVIDEOMEMORY、D3DXERR_INVALIDDATA、E_OUTOFMEMORY。

备注

索引缓冲区是用于保存索引的内存资源,它们类似于图面和顶点缓冲区。 使用索引缓冲区使 Direct3D 能够避免不必要的数据复制,并将缓冲区置于最佳内存类型中,以实现预期使用。

若要使用索引缓冲区,请创建索引缓冲区,锁定它,用索引填充它,解锁它,将其传递给 IDirect3DDevice9::SetIndices,设置顶点,设置顶点着色器,并调用 IDirect3DDevice9::D rawIndexedPrimitive 进行呈现。

D3DCAPS9 结构的 MaxVertexIndex 成员指示对呈现有效的索引缓冲区的类型。

要求

   
目标平台 Windows
标头 d3d9.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3DDevice9

IDirect3DIndexBuffer9::GetDesc

索引缓冲区 (Direct3D 9)