我一调用
void CDirectxView::initvbandib()
{
CUSTOMVERTEX g_ver[9];
g_ver[0].x=300;
g_ver[0].y =250;
g_ver[0].z=0.5f;
g_ver[0].rhw =1.0f;
g_ver[0].color =0xffff0000;
for(int i=0;i<8;i++)
{
g_ver[i+1].x=(float)(200*sin(i*3.14159/3.0))+300;;
g_ver[i+1].y =(float)(200*cos(i*3.14159/3.0))+250;;
g_ver[i+1].z=0.5;
g_ver[i+1].rhw =1.0f;
g_ver[i+1].color =0xff00ff00;
}
WORD g_Indices[]={0,1,2,0,2,3,0,4,5,0,5,6,07,8,0,8,1};
  if( FAILED( g_pd3dDevice->CreateVertexBuffer( 9*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB,NULL ) ) )
  {
return;
}
VOID* pVertices;
if(FAILED(g_pVB->Lock(0,sizeof(g_ver),(void**)&pVertices,0)))
{
return;
}
memcpy(pVertices,g_ver,sizeof(g_ver));
g_pVB->Unlock();
if(FAILED(g_pd3dDevice->CreateIndexBuffer(24*sizeof(WORD),
0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,&g_pIB,NULL)))
{
return;
}
VOID* pIndices;
if(FAILED(g_pIB->Lock(0,sizeof(g_Indices),(void**)&pIndices,0)))
{
return;
}
memcpy(pIndices,g_Indices,sizeof(g_Indices));
g_pIB->Unlock();
}这个函数
   g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
使用就出错时为什么

解决方案 »

  1.   

    g_pd3dDevice的值是否正确呢?
    在这一行上面设置一个断点,运行的时候看一下g_pd3dDevice的值是否正确。还有就是,initvbandib()这个函数是在什么地方调用的?这一行
    if(FAILED(g_pd3dDevice->CreateIndexBuffer(24*sizeof(WORD), 
    0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,&g_pIB,NULL))) 

    return; 

    好像也有问题,你的顶点索引数量不是24个啊。