像DirectX/SharpDX中的"glReadPixels"这样的函数

lun*_*tix 6 c# opengl directx sharpdx

我正在寻找一种在鼠标点读取像素颜色的方法.在OpenGL中,它是在绘制场景(或部分场景)后调用函数"glReadPixels"完成的.我想在后台制作一个简单的颜色拾取程序,用于识别3D空间中的形状/线条.

那么,在SharpDX(DirectX10/DirectX11)中是否有相同的方法/功能/建议?

xoo*_*ofx 8

使用Direct3D11完全可以:只需按照以下步骤操作:

  • 使用DeviceContext.CopySubResourceRegion将源纹理中的部件复制到分段纹理(要回读的像素区域的大小,格式相同,但使用ResourceUsage.Staging)
  • 使用Device.Map/UnMap从此分段纹理中检索像素.

关于网络的这个主题有很多讨论(例如:" 在DX11中从纹理读取一个像素到CPU ")