CreateIndexBuffer()

本文详细介绍了使用Direct3D API创建索引缓冲的过程,包括设置索引缓冲的大小、属性和格式等关键步骤,并提供了创建及填充顶点缓冲区与索引缓冲区的具体代码示例。

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

创建索引缓冲  
HRESULT CreateIndexBuffer(  
  
     UINT Length,                             //索引缓冲区大小,按字节数计算  
  
     DWORD Usage,                             //索引缓冲区属性,和顶点缓冲区相同  
  
     D3DFORMAT Format,               //索引数组的元素格式,可以使16位或者32位  
  
     D3DPOOL Pool,                            //索引缓冲区内存位置  
  
     IDirect3DIndexBuffer9** ppIndexBuffer,            //索引缓冲区指针地址  
  
     HANDLE* pSharedHandle                    //保留参数,设为0  
);  

Format:表示索引数组中的元素格式,他可以是16位整数或者32位的整数
[in] Member of the D3DFORMAT enumerated type, describing the format of the index buffer. For more information, see Remarks. The valid settings are the following:
D3DFMT_INDEX16
Indices are 16 bits each.
D3DFMT_INDEX32
Indices are 32 bits each.
Pool
[in] Member of the D3DPOOL enumerated type, describing a valid memory class into which to place the resource

 //创建顶点缓冲区  
  
    if(FAILED(g_pd3dDevice->CreateVertexBuffer(9*sizeof(CUSTOMVERTEX),  
  
                                                  0, D3DFVF_CUSTOMVERTEX,  
  
                                                  D3DPOOL_DEFAULT,&g_pVB,NULL) ))  
  
    {  
  
                                 

  
        returnE_FAIL;  
  
    } 
  
    //创建索引缓冲区  
  
    if( FAILED(g_pd3dDevice->CreateIndexBuffer(24*sizeof(WORD),  
  
                                                0, D3DFMT_INDEX16, //索引类型  
  
                                                D3DPOOL_DEFAULT,&g_pIB,NULL) ))  
  
    {  
  
        returnE_FAIL;  
  
    } 

保存顶点索引值  
  
    //填充顶点缓冲区  
  
    VOID*pVertices;  
  
    if(FAILED(g_pVB->Lock(0, sizeof(g_Vertices),(void**)&pVertices,0) ) )  
  
        return E_FAIL;  
  
    memcpy(pVertices,g_Vertices,sizeof(g_Vertices));  
  
    g_pVB->Unlock();  
  
    //填充索引缓冲区  
  
    VOID*pIndices;  
  
    if(FAILED(g_pIB->Lock(0, sizeof(g_Indices),(void**)&pIndices,0 )) )  
  
        return E_FAIL;  
  
    memcpy(pIndices,g_Indices,sizeof(g_Indices));  
  
    g_pIB->Unlock(); 




  


  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值