DirectX 9将视频帧呈现(呈现)到HWND的特定位置,保持现有窗口内容不变

时间:2014-06-23 23:16:17

标签: windows directx rendering direct3d

我正在尝试使用我的应用程序中的DirectX 9 API执行某些操作。

当我设置directx设备时,它需要一个窗口句柄(HWND),最终图形驱动程序最终了解和使用。我想要做的是在给定的窗口句柄内部,只需将图形驱动程序渲染到窗口的特定部分,并保持窗口的其余部分不变。例如。让我们说我的窗口大小是1280x720,我只想让视频帧渲染并呈现在300x200窗口内的位置。使用directx 9 API执行此操作的最佳方法是什么。我有设备所有设置,我已经可以渲染视频就好了整个窗口,但我现在尝试渲染到已经包含内容的窗口句柄,并指定我应该在同一窗口上渲染我的视频帧。我注意到如果我指定要向该位置显示该事件,它会在调用PresentEx()时显示整个窗口以及显示我的帧。

我想知道是否有办法告诉图形驱动程序不要使该窗口中的所有其他内容变黑?最初这个窗口创建了一些HTML元素,我试图不让驱动程序破坏窗口的其余部分。

我想到了以某种方式将整个后台缓冲区存在于窗口中但是以某种方式将缓冲区的一部分放在我不想绘制到透明的位置,但我也不知道如何实现这一点。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我发现在桌面Windows管理器窗口上调用DwmSetPresentParameters是一个副作用。这是在Windows 8中,因为Windows 8.1不赞成调用此函数。因此,在调用DwmSetPresentParameters函数后,DirectX与DWM一起使用会导致整个窗口变黑。