y.a.f.ake ha scritto ven, 07 aprile 2006 alle 19:02
Mi pare di capire che prima si crea un interfaccia IDirect3DVertexBuffer9 tramite CreateVertexBuffer e qui si specifica il formato dei vertici nel buffer nel tuo caso sarebbe
dwFVF = ( D3DFVF_XYZ | D3DFVF_NORMAL |D3DFVF_TEX3);
e poi si utilizza la lock passandogli un puntatore non inizializzato alla struttura da te definita.
eccoti un esempio trovato in rete:
struct Vertex
{
FLOAT x, y, z;
FLOAT nx, ny, nz;
};
const DWORD VertexFVF = (D3DFVF_XYZ | D3DFVF_DIFFUSE);
g_pDevice->CreateVertexBuffer(4*sizeof(Vertex), D3DUSAGE_WRITEONLY, VertexFVF,
D3DPOOL_DEFAULT, &pVB, NULL);
Vertex *pV;
pVB->Lock(0, 0, reinterpret_cast<void**>(&pV), 0);
pV[0].x = 0.0f; pV[0].y = 0.5; pV[0].z = 3.0f;
pV[0].diffuse = 0xffffffff;
pV[1].x = 1.0f; pV[1].y = -0.5f; pV[1].z = 4.0f;
pV[1].diffuse = 0xff777777;
pV[2].x = -1.0f; pV[2].y = -0.5f; pV[2].z = 4.0f;
pV[2].diffuse = 0xff777777;
pV[3].x = 0.0f; pV[3].y = -0.5f; pV[3].z = 2.0f;
pV[3].diffuse = 0xff000000;
pVB->Unlock();