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