Original Post
1)I am confused with this bit of code to lock before a vertices copy. Why do a cast of void** and pass an address of a pointer. Why do you need to recast the void variable with **, why use a VOID variable? I don't underdstand this basically. VOID* pVertices; if( FAILED( g_pVB->Lock( 0, sizeof(Vertices), (void**)&pVertices, 0 ) ) ) 2) in directx you can declare pointer directx types like this, this is not the same as straight c++ as no dynamic space is allocated using new. Do directX types like this work differently to regular c++ so you dont need NEW LPDIRECT3D9 g_pD3D