Direct3D 11 无窗口渲染到 DIB(用于 IMediaSample 上游)
Direct3D 11 windowless render to DIB (for use in IMediaSample upstream)
这可能吗?这个想法是将场景渲染为虚拟网络摄像头(虚拟网络摄像头本身是微不足道的部分)。我的工作基于 DirectShow SDK 中的 PushSource 示例和 D3D11 游戏示例。
我知道我已经可以将 DIB 字节复制到 IMediaStream 示例提供的指针,但是有没有办法将其用作渲染目标?或者我只是更好地以某种方式渲染屏幕外并锁定 D3D 渲染目标并将其字节复制过来?如果是这样,我该如何为此正确初始化 Direct3D?以及如何将锁定的 rect 字节转换为正确的格式?
编辑:所以,我想通了无窗口渲染部分。我的下一个问题是我能否将指向 DIB 的指针设置为渲染目标,如果不能,那么我将如何将我的 D3D11Texture2D 转换为可用格式?
已解决。答案是使用 Texture2d 作为渲染目标,获取它的资源,然后将资源的 pData 逐行复制到缓冲区并从中创建 DiB。
这可能吗?这个想法是将场景渲染为虚拟网络摄像头(虚拟网络摄像头本身是微不足道的部分)。我的工作基于 DirectShow SDK 中的 PushSource 示例和 D3D11 游戏示例。
我知道我已经可以将 DIB 字节复制到 IMediaStream 示例提供的指针,但是有没有办法将其用作渲染目标?或者我只是更好地以某种方式渲染屏幕外并锁定 D3D 渲染目标并将其字节复制过来?如果是这样,我该如何为此正确初始化 Direct3D?以及如何将锁定的 rect 字节转换为正确的格式?
编辑:所以,我想通了无窗口渲染部分。我的下一个问题是我能否将指向 DIB 的指针设置为渲染目标,如果不能,那么我将如何将我的 D3D11Texture2D 转换为可用格式?
已解决。答案是使用 Texture2d 作为渲染目标,获取它的资源,然后将资源的 pData 逐行复制到缓冲区并从中创建 DiB。