|
|
//indexbuffer 不能渲染出东西,总是一块兰屏(初始)
CUSTOMVERTEX g_Vertices3[] = {
// X Y Z U V
{-200.0f,-200.0f,-200.0f, D3DCOLOR_ARGB(0,0,255,0)}, // 0
{-200.0f, 200.0f,-200.0f, D3DCOLOR_ARGB(0,0,255,0)}, // 1
{200.0f, 200.0f,-200.0f, D3DCOLOR_ARGB(0,0,255,0)}, // 2
{200.0f,-200.0f,-200.0f, D3DCOLOR_ARGB(0,0,255,0)}, // 3
};
WORD IndexData3[ ] =
{
0,1,2,3
};
void IndexBufferRender(void)
{
// Check to make sure you have a valid Direct3D device
if( NULL == pd3dDevice )
return;// Clear the back buffer to a blue color
pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET,
D3DCOLOR_XRGB( 0,0,255 ), 1.0f, 0 );
// Create the vertex buffer
HRESULT hr;
//CREATE VERTEXT BUFFER
LPDIRECT3DVERTEXBUFFER9 vertexBuffer;
hr = pd3dDevice->CreateVertexBuffer(sizeof(g_Vertices3) * sizeof(CUSTOMVERTEX),
0,
D3DFVF_XYZ|D3DFVF_DIFFUSE,
D3DPOOL_DEFAULT,
&vertexBuffer,
NULL );
VOID* pVertices;
hr = vertexBuffer->Lock(0,sizeof(g_Vertices3)*sizeof(CUSTOMVERTEX),(void**) &pVertices,0);
if FAILED (hr) hr=0;
memcpy ( pVertices, g_Vertices3, sizeof(g_Vertices3)*sizeof(CUSTOMVERTEX) );
vertexBuffer->Unlock();
// Create the index buffer
LPDIRECT3DINDEXBUFFER9 iBuffer;
hr = pd3dDevice->CreateIndexBuffer(sizeof(IndexData3)*sizeof(WORD),D3DUSAGE_WRITEONLY,D3DFMT_INDEX32,
D3DPOOL_DEFAULT,
&iBuffer,
NULL );
VOID* IndexPtr;
hr = iBuffer->Lock(0,sizeof(IndexData3),(void**) &IndexPtr,0);
memcpy ( IndexPtr, IndexData3, sizeof(IndexData3)*sizeof(WORD) );
iBuffer->Unlock();
pd3dDevice->BeginScene();
pd3dDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE );
pd3dDevice->SetStreamSource( 0, vertexBuffer, 0, sizeof(CUSTOMVERTEX) );
pd3dDevice->SetIndices(iBuffer);
hr=pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP,
0, // BaseVertexIndex
0, // MinIndex
4, // NumVertices
0, // StartIndex
2 ); // primitive count
pd3dDevice->EndScene();
pd3dDevice-> resent( NULL, NULL, NULL, NULL );
} [em7] [em7] |
|