2012-08-29 35 views
0

我使用XNA創建了一個類似於應用程序的繪畫。在繪製圖元時擦除RenderTarget的一部分?

我有一個渲染目標作爲一個畫布。當用戶繪製東西時,我使用DrawUserPrimitives和三角形條繪製相應的三角形以生成線條和其他曲線。

我想在應用程序中實現橡皮擦,以便用戶可以從紋理中擦除三角形。我在過去和現在都使用OpenGL,我只是使用像這樣的混合函數:glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);

我該如何在XNA中執行此操作?我嘗試將GraphicsDevice混合模式設置爲AlphaBlend,Additive等,但它沒有工作。有任何想法嗎?

+0

擦除三角形?或者讓渲染目標的某些像素透明?前者並不真正與渲染目標一起工作。 –

+0

我想讓渲染目標的像素透明。 – user1495173

回答

0

如果更改代碼以使用Texture2D而不是RenderTarget2D,則可以使用RenderTarget2D.GetTexture()RenderTarget2D獲取像素數據。

當然,可能會出現性能問題,但是如果您可以通過減少完成次數的方式來優化代碼,例如臨時繪製背景顏色而不是實際擦除,然後鼠標釋放後迭代像素,可以使其工作。

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

+0

我明白了。我真的希望避免這樣做,因爲它會導致糟糕的性能。就我而言,即使您提出了優化建議。也許有一種方法來使用混合模式或什麼來實現這一目標? – user1495173