Code: Select all
D3D11_BUFFER_DESC bd;
ZeroMemory(&bd, sizeof(bd));
bd.Usage = D3D11_USAGE_DYNAMIC; // write access access by CPU and GPU
bd.ByteWidth = sizeof(VERTEX) * 3; // size is the VERTEX struct * 3
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER; // use as a vertex buffer
bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; // allow CPU to write in buffer
dev->CreateBuffer(&bd, NULL, &pVBuffer); // create the buffer
// copy the vertices into the buffer
D3D11_MAPPED_SUBRESOURCE ms;
devcon->Map(pVBuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms); // map the buffer
memcpy(ms.pData, OurVertices, sizeof(OurVertices)); // copy the data
devcon->Unmap(pVBuffer, NULL); // unmap the buffer
Here is the code i have produced.
Code: Select all
DIM bd{} = D3D11_BUFFER_DESC{}
bd.Usage% = D3D11_USAGE_DYNAMIC
bd.ByteWidth% = DIM(VERTEX{}) * 3
bd.BindFlags% = D3D11_BIND_VERTEX_BUFFER
bd.CPUAccessFlags% = D3D11_CPU_ACCESS_WRITE
SYS Dev.CreateBuffer%, Dev%, bd{}, NULL, ^pVBuffer% TO hRESULT%
IF hRESULT% <> 0 OR pVBuffer% = 0 ERROR 100, "Dev::CreateBuffer failed: "+STR$~hRESULT%
DIM ms{} = D3D11_MAPPED_SUBRESOURCE{}
SYS DevCon.Map%, DevCon%, pVBuffer%, NULL, D3D11_MAP_WRITE_DISCARD, NULL, ms{}
SYS"RtlMoveMemory", ms.pData%, OurVertices{(0)}, DIM(VERTEX{}) * 3
SYS DevCon.Unmap%, DevCon%, pVBuffer%, NULL