C# · 12月 23, 2021

c# – DirectX / SharpDX中的“glReadPixels”之类的函数

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

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

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

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

关于网络的这个主题有很多讨论(例如:“Reading one pixel from texture to CPU in DX11”)