绘制图元时删除RenderTarget的一部分?

时间:2012-08-29 09:37:37

标签: c# graphics xna

我正在使用XNA创建类似应用程序的绘图。

我有一个渲染目标,它充当画布。当用户绘制某些东西时,我使用DrawUserPrimitives和三角形条绘制相应的三角形以制作线条和其他曲线。

我想在应用程序中实现一个橡皮擦,以便用户可以从纹理中删除三角形。我过去使用过OpenGL,我只会使用这样的混合函数:glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);

我如何在XNA中执行此操作?我尝试将GraphicsDevice混合模式设置为AlphaBlendAdditive等等。但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您将代码更改为使用Texture2D而不是RenderTarget2D,则可以使用RenderTarget2D.GetTexture()RenderTarget2D获取像素数据。

当然,可能会有性能损失,但是如果你能够以减少完成次数的方式优化代码,比如临时绘制背景颜色而不是实际擦除,然后迭代通过鼠标释放后的像素,你可以使它工作。

可能有更好的方法,但我找不到它。