代码之家  ›  专栏  ›  技术社区  ›  Rob Pranay Rana

XNA SpriteBatch和BasicEffect不兼容?

  •  3
  • Rob Pranay Rana  · 技术社区  · 17 年前

    基本效果着色器控制XNA中用于简单场景的固定功能管道样式照明。

    基本效果着色器和SpriteBatch的着色器是否不兼容? 有人把这些放在一起工作吗?

    4 回复  |  直到 17 年前
        1
  •  2
  •   bufferz    17 年前

    这不是对你问题的直接回答,但可能对你有所帮助。BasicFect和SpriteBatch对象只是XNA团队在发行版中捆绑的着色器。

    这些着色器的源代码可供您查看/修改。使用自己的着色器可以防止您不断遇到路障。

    在这里您可以找到更多信息和源代码: blogs.msdn.com

        2
  •  2
  •   tooshel    15 年前

    我也有这个问题,“他们不相容”是错误的。spriteBatch会更改图形设备上的“DepthStencilState”和“BlendState”等内容。要修复此问题,请在spriteBatch.End之后添加此选项。

    GraphicsDevice.DepthStencilState = DepthStencilState.Default;
    

    GraphicsDevice.BlendState = BlendState.Opaque;
    GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
    
        3
  •  0
  •   Sekhat    16 年前

    据我所知,sprite batch在将其四边形渲染到屏幕时在内部使用它自己的效果,因为一次只能渲染一种效果,我的答案是不,它们不兼容。

        4
  •  0
  •   Joel Martinez    16 年前

    这是因为spritebatch sas使用其自己的自定义顶点着色器来进行四边形渲染。您可以使用自己的自定义像素着色器,xna creator俱乐部教育网站上有一个示例,向您展示了如何在spritebatch中使用自定义像素着色器效果。