DX11后备缓冲根据这一毫秒的博客文章 http://blogs.msdn.com/b/nativeconcurrency/archive/2012/07/02/interop-with-direct3d-textures-in-c-amp.aspx写从C++ AMP
您可以直接写在C++ AMP后备缓冲。
使用Interop,您可以使用IDXGISwapChain获取与窗口关联的后台缓冲区的纹理对象,并直接在C++ AMP内核中更新它。
我创建从DX设备的放大器设备描述符,我得到了一个指针后备缓冲区,然后试图从它使功放的质感,但我发现,纹理描述符bindFlags后备缓冲区,只D3D11_BIND_RENDER_TARGET和我需要至少D3D11_BIND_UNORDERED_ACCESS或D3D11_BIND_SHADER_RESOURCE为了Concurrency :: graphics :: direct3d :: make_texture发挥作用。
我可以很容易地做出任何其他D3D纹理,并将其连接到放大器,如果我设置bindflags,但对于设置在backbuffer上的标志,我无法连接它们。
它具有以下由微软社区贡献者
我想写直接备份交换链的缓冲标记的答案。据我所知,这是无法完成的,因为创建后台缓冲区纹理时可以使用的使用标志与C++ AMP操作纹理所需的使用标志不兼容。
因此,一方面,它(从C++ AMP写入backbuffer)是一个互操作的例子,另一方面它被解释为不可能...?
我目前的要求只是在C++ AMP中生成光线跟踪图像,并且显示在d3d显示器上每帧没有从图形卡复制数据。我意识到我可以生成我自己的纹理,然后渲染一个四边形,但直接写入后缓冲器会更简单,如果可以完成,那就是我想要做的。
也许这里有人可以解释它是否可以完成,需要采取哪些步骤来完成这个任务,或者可以解释说不,这是不可能完成的。
在此先感谢您对此主题的任何帮助。
[编辑] 我现在发现这个信息 https://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics
//此资格后缓冲区为是计算着色器的目标写入 sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS | DXGI_USAGE_SHADER_INPUT;
其实我尝试以前,但调用CreateSwapChainForCoreWindow失败 第一次机会异常在0x75251D4D在TestDxAmp.exe:微软C++异常:平台:: InvalidArgumentException ^内存位置0x0328E484。 HRESULT:0x80070057参数不正确。
这不是非常有用的信息。
编辑原帖 – JoeTaicoon 2014-09-26 07:32:14