static void VertexBufferDescTest(void) { HRESULT rc; D3DVERTEXBUFFERDESC desc; D3DVERTEXBUFFERDESC *desc2; char *buffer; int i; memset(&desc, 0, sizeof(desc)); desc.dwSize = sizeof(desc); desc.dwCaps = 0; desc.dwFVF = D3DFVF_XYZ; desc.dwNumVertices = 1; rc = IDirect3D7_CreateVertexBuffer(lpD3D, &desc, &lpVBufSrc, 0); ok(rc==D3D_OK || rc==E_OUTOFMEMORY, "CreateVertexBuffer returned: %x\n", rc); if (!lpVBufSrc) { trace("IDirect3D7::CreateVertexBuffer() failed with an error %x\n", rc); goto out; } buffer = malloc(sizeof(D3DVERTEXBUFFERDESC)*2); //make shure it's bigger than D3DVERTEXBUFFERDESC if(buffer == NULL) { trace("Malloc failed, out of memory?\n"); goto out; } memset(buffer, 0x12, sizeof(D3DVERTEXBUFFERDESC)*2); desc2 = (D3DVERTEXBUFFERDESC *) buffer; desc2->dwSize = 0; rc = IDirect3DVertexBuffer7_GetVertexBufferDesc(lpVBufSrc, desc2); if(rc != D3D_OK) { free(desc2); skip("GetVertexBuffer Failed!\n"); } for(i = 0; i != 30; ++i) trace("%i \n", buffer[i]); trace("----------------------------------------------------------\n"); memset(buffer, 0x12, sizeof(D3DVERTEXBUFFERDESC)*2); desc2->dwSize = sizeof(D3DVERTEXBUFFERDESC); rc = IDirect3DVertexBuffer7_GetVertexBufferDesc(lpVBufSrc, desc2); if(rc != D3D_OK) { free(desc2); skip("GetVertexBuffer Failed!\n"); } for(i = 0; i != 30; ++i) trace("%i \n", buffer[i]); trace("----------------------------------------------------------\n"); memset(buffer, 0x12, sizeof(D3DVERTEXBUFFERDESC)*2); desc2->dwSize = sizeof(D3DVERTEXBUFFERDESC)*2; rc = IDirect3DVertexBuffer7_GetVertexBufferDesc(lpVBufSrc, desc2); if(rc != D3D_OK) { free(desc2); skip("GetVertexBuffer Failed!\n"); } for(i = 0; i != 30; ++i) trace("%i \n", buffer[i]); // memset(buffer, 0x12, sizeof(D3DVERTEXBUFFERDESC)); // buffer2->dwSize = 0; /* buffer2->dwCaps = 0; buffer2->dwFVF = 0; buffer2->dwNumVertices = 0; */ // IDirect3DVertexBuffer7_GetVertexBufferDesc(lpVBufSrc, buffer2); return; out: IDirect3DVertexBuffer7_Release(lpVBufSrc); }