【问题标题】:Monogame "lighting" specific objectsMonogame“照明”特定对象
【发布时间】:2015-04-09 12:34:42
【问题描述】:

我在 Monogame 中做过类似的事情:

我的问题是,我应该怎么做才能在仅在柱子上而不是在背景上绘制照明效果?使用 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();    

【问题讨论】:

  • XNA 还是 Monogame?它们不是 100% 相同的
  • @MickyDuncan monogame,是的,它们 95% 是一样的,另外 5% 大部分都没有实现
  • 谢谢。我删除了xna 标签

标签: c# monogame lighting


【解决方案1】:

基本上,您有两种选择:

  • 使用像素着色器仅在所需区域渲染光照精灵或
  • 使用模板缓冲区并将柱子渲染到其中,然后再应用光照精灵。

我不会详细解释这一点,因为这两种方式都在 gamedev stackexchange 的 this question 上进行了广泛的解释。

【讨论】:

  • 你会推荐哪一个?
  • 我个人会使用模板缓冲区,因为它的目的正是为这种情况制作“模板”,尤其是。在 3D 应用程序中。
  • 如何遮盖 3D 模型?我认为那不可能?我也需要知道如何做到这一点,因为我不仅需要“点亮”柱子,还需要用这种方法“点亮”3D模型,你知道这是否可能吗?
  • 您并没有真正掩盖 3D 模型,而是掩盖了它的渲染轮廓。它与 Sprite 的过程相同:首先将模型渲染到场景中,然后渲染到模板缓冲区,然后使用活动模板缓冲区渲染照明精灵。
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
相关资源
最近更新 更多