首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“点灯”特定对象

“点灯”特定对象
EN

Stack Overflow用户
提问于 2015-02-09 17:13:31
回答 1查看 893关注 0票数 0

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

我的问题是,我要做什么才能把照明效果仅仅画在柱上,而不是背景上?在使用BlendState.Additive时,是否有类似于忽略某些精灵的东西?那该怎么做?我现在就是这样画的。

代码语言:javascript
复制
//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();    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-09 19:15:39

基本上,你有两个选择:

  • 使用像素着色器只在所需区域或
  • 使用模版缓冲器,并在您轻巧的灯光精灵之前将柱子渲染到它中。

我不会详细解释这一点,因为这两种方法在gamedev stackexchange的this question上都有详细的解释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28415387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档