今天热门
热点:

d3d画立方体,d3d画立方体


我用三角带去画个立方体   我是这样画的  分三次画三角带  第一次画了8个  这样就使立方体出现了四个面  而且这四个面是围成立方体的四个面   然后再用两次三角带  给立方体加上底和顶面
请问能不能一次就画三角带  就将立方体的六个面画完 ???

解决方案

可以阿,用indexbuffer

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 阿,那可以阿,你看下面这个图形:

www.zrccd.nettrue/topics/20180124/125183.htmlTechArticled3d画立方体,d3d画立方体 我用三角带去画个立方体我是这样画的分三次画三角带第一次画了8个这样就使立方体出现了四个面而且这四个面是围成立方体的四个面然后再用两次三角带给...

相关文章

    暂无相关文章

用户评论

大家都在看