我想用于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;

据我所知,精灵批量使用它自己的作用内部再现它的四边形屏幕的时候,你只能在一个时间效果渲染,我的答案是否定的,它们互不兼容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top