我正在使用XNA创建类似应用程序的绘图。
我有一个渲染目标,它充当画布。当用户绘制某些东西时,我使用DrawUserPrimitives
和三角形条绘制相应的三角形以制作线条和其他曲线。
我想在应用程序中实现一个橡皮擦,以便用户可以从纹理中删除三角形。我过去使用过OpenGL,我只会使用这样的混合函数:glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
我如何在XNA中执行此操作?我尝试将GraphicsDevice
混合模式设置为AlphaBlend
,Additive
等等。但它不起作用。有什么想法吗?
答案 0 :(得分:0)
如果您将代码更改为使用Texture2D
而不是RenderTarget2D
,则可以使用RenderTarget2D.GetTexture()
从RenderTarget2D
获取像素数据。
当然,可能会有性能损失,但是如果你能够以减少完成次数的方式优化代码,比如临时绘制背景颜色而不是实际擦除,然后迭代通过鼠标释放后的像素,你可以使它工作。
可能有更好的方法,但我找不到它。