绘制基本体时删除RenderTarget的一部分



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

我有一个渲染目标,它充当画布。当用户画东西时,我用DrawUserPrimitives和三角形条画出相应的三角形,以形成直线和其他曲线。

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

在XNA中我该怎么做?我尝试将GraphicsDevice混合模式设置为AlphaBlendAdditive等,但没有成功。有什么想法吗?

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

当然,性能可能会受到影响,但如果你能优化代码,减少这样做的次数,比如临时绘制背景色而不是实际擦除,然后在鼠标释放后迭代像素,你就可以让它工作了。

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

相关内容

  • 没有找到相关文章

最新更新