d3d画立方体,d3d画立方体
我用三角带去画个立方体 我是这样画的 分三次画三角带 第一次画了8个 这样就使立方体出现了四个面 而且这四个面是围成立方体的四个面 然后再用两次三角带 给立方体加上底和顶面请问能不能一次就画三角带 就将立方体的六个面画完 ???
解决方案
pDevice->CreateVertexBuffer( 12*sizeof(CustomVertex), 0, D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_MANAGED, &g_pVB, NULL );
pDevice->CreateIndexBuffer( 36*sizeof(WORD),0,D3DFMT_INDEX16,D3DPOOL_MANAGED, &g_pIB, NULL);
CustomVertex* VB;
g_pVB->Lock( 0,0,(void**)&VB,0);
VB[0]=CustomVertex( -1,-1, 1,D3DCOLOR_XRGB(255,0,0));
VB[1]=CustomVertex( -1, 1, 1,D3DCOLOR_XRGB(0,255,0));
VB[2]=CustomVertex( 1, 1, 1,D3DCOLOR_XRGB(0,0,255));
VB[3]=CustomVertex( 1,-1, 1,D3DCOLOR_XRGB(255,0,255));
VB[4]=CustomVertex( -1,-1,-1,D3DCOLOR_XRGB(255,255,0));
VB[5]=CustomVertex( -1, 1,-1,D3DCOLOR_XRGB(255,255,255));
VB[6]=CustomVertex( 1, 1,-1,D3DCOLOR_XRGB(0,0,0));
VB[7]=CustomVertex( 1,-1,-1,D3DCOLOR_XRGB(0,255,255));
VB[8]=CustomVertex( -1, 1, 1,D3DCOLOR_XRGB(128,0,0)); //与VB[1]相同
VB[9]=CustomVertex( 1, 1,-1,D3DCOLOR_XRGB(0,128,0)); //与VB[6]相同
VB[10]=CustomVertex(-1,-1, 1,D3DCOLOR_XRGB(0,0,128)); //与VB[0]相同
VB[11]=CustomVertex( 1,-1,-1,D3DCOLOR_XRGB(128,0,128)); //与VB[7]相同
g_pVB->Unlock();
WORD* IB;
g_pIB->Lock(0,0,(void**)&IB,0);
//正面
IB[0]=0;IB[1]=1;IB[2]=2;
IB[3]=2;IB[4]=3;IB[5]=0;
//右面
IB[6]=3;IB[7]=2;IB[8]=6;
IB[9]=6;IB[10]=7;IB[11]=3;
//左面
IB[12]=1;IB[13]=5;IB[14]=4;
IB[15]=4;IB[16]=0;IB[17]=1;
//后面
IB[18]=5;IB[19]=6;IB[20]=7;
IB[21]=7;IB[22]=4;IB[23]=5;
////上面
IB[24]=1;IB[25]=5;IB[26]=6;
IB[27]=6;IB[28]=2;IB[29]=1;
//
////下面
IB[30]=0;IB[31]=4;IB[32]=7;
IB[33]=7;IB[34]=3;IB[35]=0;
g_pIB->Unlock();
...
pd3dDevice->SetRenderState( D3DRS_LIGHTING, false);
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE);
pd3dDevice->SetStreamSource(0,g_pVB, 0, sizeof(CustomVertex));
pd3dDevice->SetIndices(g_pIB);
pd3dDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE);
pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 12, 0, 12);
根据这个帖子http://topic.csdn.net/u/20091005/11/37ff282d-9ab2-434a-9a41-cc2ab2748d70.html改的,它的索引顺序不太对,有的顺时针,有的逆时针,所以我把cull关了,你可以自己改改。 哦,看错了,是用Triangle Strips 阿,那可以阿,你看下面这个图形:
用户评论