是否有一种方法可以将RasterizerState设置为WireFrame

本文关键字:RasterizerState 设置 WireFrame 方法 一种 是否 | 更新日期: 2023-09-27 18:06:07

我有一个我想在WireFrame模式下查看的网格。我现在是这样设置我的GraphicsDevice的…

TheGraphicsDevice.RasterizerState = new RasterizerState()
{
    FillMode = FillMode.WireFrame,
    CullMode = CullMode.None
};

这是做我想要的,但似乎我必须设置RasterizerState每次绘制()被调用

是否有一种方法可以将RasterizerState设置为WireFrame一次?(就像我第一次声明GraphicsDevice变量一样?)我已经尝试了我能想到的每一个组合,但它似乎只有当我(重新)设置它在Draw()方法。

是否有一种方法可以将RasterizerState设置为WireFrame

如果你正在绘制3d项目和2d项目的组合(使用SpriteBatch),那么调用spriteBatch.Begin()将重置填充模式回实体。所以在这种情况下,当你绘制3d项目时,你必须将其设置为每帧线框(或使用spritebatch saveState)。

如果你只绘制3d项目,那么你可以在初始化时设置一次,而不需要一直重置它。

如果你需要每一帧设置它,不要像你的代码片段那样。这就是为每一帧分配最终需要gc(ed)的新内存。相反,创建一个自定义的RasterizationState对象并在每一帧中重用它。