您的程序可以使用该函数创建与现有 Direct3D 缓冲区关联的 C++ AMP 数组make_array()。
template<typename T, int N>
array<T,N> make_array(const extent& ext, IUnknown* buffer);
Direct3D 缓冲区必须实现该ID3D11Buffer接口。它必须支持原始视图 ( D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS) 并允许SHADER_RESOURCE和
UNORDERED_ACCESS绑定。缓冲区本身必须具有正确的大小,即范围大小乘以缓冲区类型的大小。
该get_buffer()函数支持反向操作,从数组中获取 Direct3D 缓冲区接口。与获取设备时一样,IUnknown必须查询返回的所需接口。
HRESULT hr = S_OK;
array<int, 1> arr(1024);
CComPtr<ID3D11Buffer> buffer;
IUnknown* unkBuf = get_buffer(arr);
hr = unkBuf->QueryInterface(__uuidof(ID3D11Buffer), reinterpret_cast<LPVOID*>(&buffer));