我似乎无法找到让我自己读取来自AMP数组的数据的方法。使用C++读取缓冲区数据AMP
我想要做的就是拿走我的缓冲区,将它复制到一个矢量中,然后使用矢量。我知道我应该设置CPU访问标志,但是我很难这样做。首先,这是我试图访问缓冲区的方式。我先把这个放在这里,以防万一我做了一些不该做的事情。也许有一个内置的功能,我错过了这个对我来说呢?
std::vector<Pticle> vecParticles;
ID3D11Buffer* pBuffer = reinterpret_cast<ID3D11Buffer *>(concurrency::direct3d::get_buffer(m_arrParticles));
D3D11_MAPPED_SUBRESOURCE MappedResource;
m_pDeviceContext->Map(pBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &MappedResource);
{
auto pData = (Pticle*)MappedResource.pData;
for (unsigned i = 0; i < m_uiNumParticles; ++i)
{
vecParticles.push_back(pData[i]);
}
}
m_pDeviceContext->Unmap(pBuffer, 0);
基本上它应该从缓冲区中的所有数据写入到载体
现在我知道我应该把我的访问标志,但我似乎无法做到这一点。我写在下面的函数在我的initialise:
m_Accelerator.set_default_cpu_access_type(concurrency::access_type::access_type_read_write);
但是它打破,并出现以下错误
"Invalid access_type specified. accelerator does not support zero copy."
我不知道这意味着什么,如果我试图将其设置阅读和写作,没有通过测试?它也适用于我尝试的任何访问类型。
如何设置它,以便我可以从缓冲区中读取数据?