我似乎無法找到讓我自己讀取來自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."
我不知道這意味着什麼,如果我試圖將其設置閱讀和寫作,沒有通過測試?它也適用於我嘗試的任何訪問類型。
如何設置它,以便我可以從緩衝區中讀取數據?