2010-11-11 17 views
1

我正在C#中使用XNA進行2D項目,我需要在Texture2D上渲染大量灰度圖 - 我正在切換渲染狀態並使用Sprite批處理並獲得結果主要得益於其他stackoverflow帖子。我無法找到的是如何使用除Alpha或Multiply以外的其他東西進行混合。在XNA中像Photoshop一樣的混合模式的建議方法

我正在尋找的結果相當於Photoshop中的Lighten混合模式 - 在紋理內容與我繪製的精靈之間,我只是真的希望像素比繪製到紋理的紋理更輕。我天真的做法是循環播放源和目標中的像素數據。有沒有一個好的解決方案?

回答

2

如果您使用的是XNA 4.0,則可以將BlendState對象傳遞給SpriteBatch.Begin

您想將BlendState.ColorBlendFunction設置爲BlendFunction.MaxThe documentation列出了實際的混合函數。

爲了達到您的效果,我想您還需要設置ColorSourceBlendColorDestinationBlend均等於Blend.One

同樣的事情在早期版本的XNA的可能,但你必須使用SpriteBatch與SpriteSortMode.Immediate,並呼籲開始,第一個電話之前繪製修改後的GraphicsDevice.RenderState適當的成員。

Read this blog post瞭解更多詳情。

+0

這就是它! – Emory 2010-11-11 05:13:01

相關問題