有人能提供一个使用Direct2D处理像素的高效方法的示例吗?
例如,如何在渲染目标上将所有绿色像素(RGB = 0x00FF00
)与红色像素(RGB = 0xFF0000
)交换?这里假设使用某种硬件加速。我应该为直接像素操作创建不同的对象吗?是否可以使用ID2D1HwndRenderTarget
实现?标准方法是什么?
使用DirectDraw,我会在IDirectDrawSurface7
上使用BltFast
方法进行逻辑操作。Direct2D中是否有类似的方法?
另一个任务是动态生成复杂图像,其中每个点的位置和颜色都是数学函数的结果。为了简化示例,让我们绘制Y = X ^ 2
。如何使用Direct2D实现呢?最终我需要绘制复杂函数,但如果有人能给我一个关于Y = X ^ 2
的简单示例就好了。
ID2D1RenderTarget
上使用QueryInterface
来获取ID2D1DeviceContext
。这使您可以使用更简单的ID2D1Factory :: CreateHwndRenderTarget
方法,但仍然可以获得更新的API并避免处理DXGI / Direct3D文件。据我所知,这是未记录的,但似乎是有意为之的。 - Rick Brewster