目前正在制作一款游戏,并尝试在点击“菜单”按钮时获取一个覆盖屏幕的叠加层 - 这应该是相当常见/简单的事情,但仍然在实现过程中遇到问题。
我当前的设置:
- TiledMapRenderer:用于呈现TMX瓷砖(背景/地图)
- SpriteBatch:用于各种资产(例如玩家图像)
- Stage:用于容纳菜单按钮
- ShaderProgram:使用GLSL创建叠加层/阴影效果
- SpriteBatch和地图设置为使用ShaderProgram
正如许多人建议的那样,为了提高性能,我只使用一个SpriteBatch - 因此各种资产和菜单Stage都使用同一个SpriteBatch。
着色器的目的是添加一个暗/半透明的叠加层,使屏幕变灰,因此打开菜单时更容易阅读。
我遇到的主要问题是,因为资产和菜单共享同一个SpriteBatch,它们也共享同一个着色器...所以,当我启用着色效果时,所有东西(包括背景和菜单按钮)都会变成灰色。
如何只使用一个SpriteBatch,但仅将Shader应用于背景(并保持菜单按钮正常/未着色)?
SpriteBatch
?只在特定的z
阈值之后应用灰度效果? - Stefan Hanke