2015-02-09 76 views
0

我已經做了類似這樣的東西在Monogame:Monogame「照明」特定對象

2

3

我的問題是,什麼話我必須做的畫只照明效果在支柱而不是背景?有沒有像使用BlendState.Additive時忽略某些精靈的東西?這將如何工作?這是我現在如何繪製它。

//draw background 
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque); 
spriteBatch.Draw(Background, Vector2.Zero, Color.White); 
spriteBatch.End(); 

//draw pillar 
spriteBatch.Begin(SpriteSortMode.Deferred); 
spriteBatch.Draw(Texture, new Rectangle(PillarX, PillarY, Width, Height), Color.White); 
spriteBatch.End(); 

//draw lighting sprite in additive mode 
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive); 
spriteBatch.Draw(LightTexture, pos, null, Color.OrangeRed, 0f, Vector2.Zero, 
    scale, SpriteEffects.None, 0f); 
spriteBatch.End();  
+0

XNA或Monogame?他們不是100%相同 – MickyD 2015-02-28 08:12:53

+0

@MickyDuncan monogame,好吧他們是95%相同,其他5%大多數是不實施的東西 – dimitris93 2015-02-28 09:15:37

+0

謝謝你。我已經刪除了'xna'標籤 – MickyD 2015-02-28 10:28:44

回答

2

基本上,有兩個選擇:

  • 使用像素着色器來呈現照明子畫面只在期望的區域或
  • 使用模板緩衝區和你之前使支柱到它適合照明精靈。

我不會詳細解釋這一點,因爲這兩種方式在gamedev stackexchange的this question廣泛解釋。

+0

哪一個你會推薦? – dimitris93 2015-02-09 19:27:12

+0

我個人會使用模板緩衝區,因爲它的確切目的是爲這種情況製作「模板」,特別是,在3D應用程序中。 – thegentlecat 2015-02-09 21:23:45

+0

我如何掩蓋3D模型?我不認爲這可能?我還需要知道如何做到這一點,因爲我不僅需要「點亮」柱子,還要用這種方法「點亮」3D模型,你知道這是否可能? – dimitris93 2015-02-10 02:42:41