Am 08.07.2020 um 22:44 schrieb Paul Gofman pgofman@codeweavers.com:
- hr = IDirect3DVertexBuffer9_Lock(buffer, 0, size, (void **)&quads, 0);
- ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
- /* The data has been reset for the whole buffer. */
- for (i = 0; i < quad_count - 1; ++i)
ok(memcmp(&quads[i], &quad1, sizeof(quad1)), "Quads match, i %u.\n", i);
- ok(!memcmp(&quads[i], &quad2, sizeof(quad2)), "Quads do not match, i %u.\n", i);
- for (i = 0; i < quad_count; ++i)
quads[i] = quad1;
- hr = IDirect3DVertexBuffer9_Unlock(buffer);
- ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
- hr = IDirect3DDevice9_SetStreamSource(device, 0, buffer2, 0, sizeof(*quads->strip));
- ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
What happens if you draw something from 'buffer' between the Unlock and SetStreamSource? See test_vb_discard() in ddraw7.c, although I think Henri ported the test to d3d8/9 at some point. I couldn't find it on a quick search though.
What happens if you bind the a to a stream that is not used by the vertex declaration?