XNA SpriteBatch和BasicEffect不兼容?
题
我想用于2D SpriteBatch呈现在全球范围内设置的图形来控制环境照明。我知道我可以通过将传递到SpriteBatch.Draw颜色做到这一点,但我宁愿做这个全球。
在XNA的BasicEffect着色器contols固定功能流水线式照明简单场景。
是对BasicEffect着色器和所述SpriteBatch的不相容? 有没有人有这些一起工作?
解决方案
是,它们是不相容的。
这是因为spritebatch SAS使用自己的定制的顶点着色器做四渲染。您可以使用自己的自定义像素着色器,并有将告诉您如何使用与spritebatch定制像素着色效果的XNA创造者俱乐部教育网站的样本。
其他提示
这是不是直接回答你的问题,但可能会有一些对你有用的。 BasicEffect和SpriteBatch对象仅仅着色器,所述队XNA与释放捆绑。
这些着色器的源代码是提供给供查看/修改自己的喜好。做你自己的着色器将让你撞上路障不断。
在这里你可以找到更多的信息和源代码: blogs.msdn。 COM
我太有这个问题,“他们是不兼容”是错误的。该spriteBatch变化的东西像“DepthStencilState”和图形设备上的“BlendState”。为了解决这个问题spriteBatch.End后添加此。
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
spriteBatch改变DepthStencilState为无,这就是为什么3D对象不正确绘制。其它性能得到太多改变。检查这些了:
GraphicsDevice.BlendState = BlendState.Opaque;
GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
据我所知,精灵批量使用它自己的作用内部再现它的四边形屏幕的时候,你只能在一个时间效果渲染,我的答案是否定的,它们互不兼容。
不隶属于 StackOverflow