我的程序中有一些众所周知的步骤:
CreateBuffer
Create..View
CSSet..Views
Dispatch
将数据复制到GPU的哪一步?
答案 0 :(得分:1)
DirectX manages the memory为您和数据在需要时复制到GPU。
答案 1 :(得分:1)
他们拒绝投票的原因是因为看起来好像你没有在Google搜索中付出任何努力。
答案:调用创建方法时,DirectX通常会将数据从系统内存传输到视频内存中。创建方法的示例是“ID3D11Device :: CreateBuffer”。此方法需要指向数据所在位置的指针,以便将其从系统RAM复制到视频RAM。但是,如果传入的指针是空指针,那么它只是设置边的空间量,以便稍后复制它。
示例:
如果你创建一个动态顶点缓冲区而你最初没有传入数据,那么你将不得不使用map / unmap将数据复制到视频内存中。
// Fill in a buffer description.
D3D11_BUFFER_DESC bufferDesc;
bufferDesc.Usage = D3D11_USAGE_DYNAMIC;
bufferDesc.ByteWidth = sizeof(Vertex_dynamic) * m_iHowManyVertices;
bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
bufferDesc.MiscFlags = 0;
bufferDesc.StructureByteStride = NULL;
// Fill in the subresource data.
D3D11_SUBRESOURCE_DATA InitData;
InitData.pSysMem = &_vData[0];
InitData.SysMemPitch = NULL;
InitData.SysMemSlicePitch = NULL;
// Create the vertex buffer.
/*Data is being copyed right now*/
m_pDxDevice->CreateBuffer(&bufferDesc, &InitData, &m_pDxVertexBuffer_PiecePos);