Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gdi 快速(硬件加速)绘制到外部窗口(可能使用Direct3D)_Gdi_Direct3d - Fatal编程技术网

Gdi 快速(硬件加速)绘制到外部窗口(可能使用Direct3D)

Gdi 快速(硬件加速)绘制到外部窗口(可能使用Direct3D),gdi,direct3d,Gdi,Direct3d,我正在从事某个项目,任务是在所有可见窗口(即不属于我的应用程序的窗口)的非客户端区域绘制位图(当前为HBITMAP/bitblt/alphablend)。它必须做得非常快-位图是更新时,窗口被移动,调整大小等。也有一些模糊算法必须应用于这个位图。它应该在Win7和Win8上工作(因此不需要XP) 我已经设法与GDI正常工作。我将GetWindowDC、GetWindowRect和AlphaBlend位图获取到缓冲区(CreateCompatibleDC/CreateCompatibleBitma

我正在从事某个项目,任务是在所有可见窗口(即不属于我的应用程序的窗口)的非客户端区域绘制位图(当前为HBITMAP/bitblt/alphablend)。它必须做得非常快-位图是更新时,窗口被移动,调整大小等。也有一些模糊算法必须应用于这个位图。它应该在Win7和Win8上工作(因此不需要XP)

我已经设法与GDI正常工作。我将GetWindowDC、GetWindowRect和AlphaBlend位图获取到缓冲区(CreateCompatibleDC/CreateCompatibleBitmap),然后将其BitBlt到GetWindowDC中。这个很好用。。。除了它没有我想要的那么快。如果我在位图上应用模糊算法,那么一切都会非常缓慢

所以我的问题是如何提高速度?我在考虑硬件加速绘图

a) 我尝试了与GDI兼容的Direct2D(使用ID2D1DCRenderTarget+BindDC),但它比纯GDI慢得多

b) 我在考虑Direct3D。问题是我可能不知道如何使用它。如果我调用D3D10CreateDeviceAndSwapChain并将swapchain的OutputWindow设置为我的应用程序的HWND,那么它将返回s_OK,但当我将任何外部窗口的OutputWindow设置为HWND时,该方法将失败。因此,我不知道如何渲染到外部窗口

c) 如何正确地对图像的某一部分应用模糊?我发现了很多算法,但都是在CPU上处理的。如何在GPU上实现它


提前感谢您提出如何解决我的问题的建议。

您考虑过使用DComp吗?有关使用DComp可能合适的原因,请查看以下内容:

有关DComp的简要概述(来自MSDN):

Microsoft DirectComposition是一个Windows组件,可通过变换、效果和动画实现高性能位图合成。应用程序开发人员可以使用DirectComposition API创建具有视觉吸引力的用户界面,这些界面具有从一种视觉到另一种视觉的丰富且流畅的动画过渡

DirectComposition通过实现高帧速率、使用图形硬件和独立于UI线程进行操作,实现丰富流畅的过渡。DirectComposition可以接受由不同渲染库绘制的位图内容,包括Microsoft DirectX位图和渲染到窗口的位图(HWND位图)。此外,DirectComposition还支持各种变换,如二维仿射变换和三维透视变换,以及基本效果,如剪裁和不透明度

DirectComposition旨在简化合成视觉效果和创建动画过渡的过程。如果您的应用程序已经包含呈现代码或已经使用推荐的DirectX API,则只需做少量工作即可有效使用DirectComposition