Я не могу найти способ позволить себе прочитать данные из моего массива AMP.Чтение данных буфера с использованием C++ AMP
Что я хочу иметь, это взять мой буфер, скопировать его в вектор, а затем использовать вектор. Я знаю, что я должен установить флаги доступа к процессору, но у меня возникают проблемы с этим.
Во-первых, я пытаюсь получить доступ к буферу. Я делаю это здесь сначала на всякий случай, когда я сделал что-то, как это не должно быть сделано. Возможно, есть встроенная функция, которую я пропустил, что делает это для меня?
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."
Я не уверен, что это значит, если я пытаюсь установить его читать и писать, разве он не прошел тест? Он также делает это на любом типе доступа, который я пытаюсь сделать.
Как его настроить, чтобы я мог считывать данные из буфера?