怎样在D3D中绘制一个立方体(带贴图)?
火云洞红孩儿 博客专家认证 2003-11-25 05:05:56 刚看完Direct3D9初级教程,虽然还算容易\但脑袋有点疼…
…
好了,我打算做一个立方体(带贴图),建立顶点缓冲后。我以为按照空间位置将每个定点位置计算过后写进顶点缓冲数组就行了。可是搞来搞去。立方体我只能贴出四个面。有两个相对应的面死活贴不出来。咋办的?
请高手指点一下下哟!
以下是部分代码:
void CD3DWnd::InitGeometry()
{
//从图片文件中直接创建纹理对象
::D3DXCreateTextureFromFile( m_pDevice, "1.jpg", &m_pTexture );
//建立圆锥曲面的数学模型
CUSTOMVERTEX1 vertices1[10];
vertices1[0].position=D3DXVECTOR3(-5.0f,5.0f,5.0f);
vertices1[0].normal=D3DXVECTOR3(-5.0f,5.0f,5.0f);
vertices1[0].tu=0.0;
vertices1[0].tv=0.0;
vertices1[1].position=D3DXVECTOR3(5.0f,5.0f,5.0f);
vertices1[1].normal=D3DXVECTOR3(5.0f,5.0f,5.0f);
vertices1[1].tu=1.0;
vertices1[1].tv=0.0;
vertices1[2].position=D3DXVECTOR3(-5.0f,-5.0f,5.0f);
vertices1[2].normal=D3DXVECTOR3(-5.0f,-5.0f,5.0f);
vertices1[2].tu=0.0;
vertices1[2].tv=1.0;
vertices1[3].position=D3DXVECTOR3(5.0f,-5.0f,5.0f);
vertices1[3].normal=D3DXVECTOR3(5.0f,-5.0f,5.0f);
vertices1[3].tu=1.0;
vertices1[3].tv=1.0;
vertices1[4].position=D3DXVECTOR3(-5.0f,-5.0f,-5.0f);
vertices1[4].normal=D3DXVECTOR3(-5.0f,-5.0f,-5.0f);
vertices1[4].tu=0.0;
vertices1[4].tv=0.0;
vertices1[5].position=D3DXVECTOR3(5.0f,-5.0f,-5.0f);
vertices1[5].normal=D3DXVECTOR3(5.0f,-5.0f,-5.0f);
vertices1[5].tu=1.0;
vertices1[5].tv=0.0;
vertices1[6].position=D3DXVECTOR3(-5.0f,5.0f,-5.0f);
vertices1[6].normal=D3DXVECTOR3(-5.0f,5.0f,-5.0f);
vertices1[6].tu=0.0;
vertices1[6].tv=1.0;
vertices1[7].position=D3DXVECTOR3(5.0f,5.0f,-5.0f);
vertices1[7].normal=D3DXVECTOR3(5.0f,5.0f,-5.0f);
vertices1[7].tu=1.0;
vertices1[7].tv=1.0;
vertices1[8].position=D3DXVECTOR3(-5.0f,5.0f,5.0f);
vertices1[8].normal=D3DXVECTOR3(-5.0f,5.0f,5.0f);
vertices1[8].tu=0.0;
vertices1[8].tv=0.0;
vertices1[9].position=D3DXVECTOR3(5.0f,5.0f,5.0f);
vertices1[9].normal=D3DXVECTOR3(5.0f,5.0f,5.0f);
vertices1[9].tu=1.0;
vertices1[9].tv=0.0;
//创建圆锥曲面的顶点缓存区,填入顶点数据
m_pDevice->CreateVertexBuffer(
sizeof(vertices1), 0, D3DFVF_CUSTOMVERTEX1,
D3DPOOL_DEFAULT, &m_pVB1, NULL );
void* pVertices;
m_pVB1->Lock( 0, sizeof(vertices1), (void**)&pVertices, 0 );
memcpy( pVertices, vertices1, sizeof(vertices1) );
m_pVB1->Unlock();
…