我希望能够在全局范围内控制2D SpriteBatch渲染的一组图形的环境光照。我知道可以通过混合传递到SpriteBatch.Draw中的颜色来实现这一点,但我更愿意在全局范围内进行控制。
BasicEffect着色器可控制XNA中简单场景的固定功能管线样式照明。
BasicEffect着色器和SpriteBatch的着色器是否不兼容?有人将它们成功地结合使用过吗?
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
spriteBatch会将DepthStencilState更改为无,因此3D对象无法正确绘制。其他属性也会被更改。请检查以下内容:
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
是的,它们不兼容。
这是因为spritebatch必须使用自己的定制顶点着色器来进行四边形渲染。您可以使用自己的自定义像素着色器,并且在xna creator's club教育网站上有一个示例,向您展示如何使用自定义像素着色器效果与spritebatch一起使用。