2013/8/1 Nozomi Kodama nozomi.kodama@yahoo.com:
+ vertices = HeapAlloc(GetProcessHeap(), 0, 2 * (sides + 1) * sizeof(D3DXVECTOR3)); + if (!vertices) + { + TRACE("Not memory enough for vertex buffer\n"); + polygon->lpVtbl->Release(polygon); + return E_OUTOFMEMORY; + } + + hr = polygon->lpVtbl->LockVertexBuffer(polygon, D3DLOCK_DISCARD, (VOID **)&vertices);
Why are you allocating memory and immediately dropping track of it? Recheck how ID3DXMesh::LockVertexBuffer works. Also I'm having a deja-vu here, this patch looks suspiciously similar (up to having this same issue) to one I've already reviewed in the past.