目前,我正在开发使用Direct2D进行实时图像处理的Windows应用商店的应用程序。它必须支持各种尺寸的图像。我遇到的第一个问题是如何处理图像大于最大支持纹理大小的情况。经过一些研究和文档阅读后,我发现VirtualSurfaceImageSource是一个解决方案。这个想法是加载图像作为IWICBitmap,然后用CreateWICBitmapRenderTarget(据我所知不是硬件加速)创建渲染目标。经过一些绘图操作之后,我想通过使VirtualSurfaceImage源中相应的区域无效或在NeedUpdate回调触发时将结果显示在屏幕上。我认为可以通过创建ID2D1Bitmap(硬件加速)并使用CreateWICBitmapRenderTarget创建的渲染目标和无效区域作为边界调用CopyFromRenderTarget来实现,但该方法因此返回D2DERR_WRONG_RESOURCE_DOMAIN。使用IWICBitmap的另一个原因是应用程序中涉及的算法之一,它必须有权访问更新图像的像素。使用Direct2D进行实时图像处理的大型图像
问题是为什么这个逻辑不起作用?这是使用Direct2D实现我的目标的正确方法吗?另外就用CreateWICBitmapRenderTarget创建的渲染目标不是硬件加速,如果我想在GPU上执行我的图像处理,并且图像大于最大允许纹理大小,这是最佳解决方案?
预先感谢您。