XNA似乎在显示消息框后重置着色器

时间:2011-04-07 18:22:18

标签: c# windows-phone-7 xna

我正在为Windows Phone 7开发,在使用Guide.BeginShowMessageBoxGuide.BeginShowKeyboardInput时遇到了一些问题。消息框出现后,应用程序有时会因错误而崩溃:

“在执行任何绘制操作之前,必须在设备上设置顶点着色器和像素着色器。”

奇怪的是,当消息框可见时,它似乎崩溃了,但是在我更新之前我有以下检查并在我的Game类中绘制方法:

    protected override void Update(GameTime gameTime) {
        if (IsActive && !Guide.IsVisible) {
            //Update stuff here
        }
        base.Update(gameTime);
    }

    protected override void Draw(GameTime gameTime) {
        if (IsActive && !Guide.IsVisible) {
            //Draw stuff here
        }
        base.Draw(gameTime);
    }

但我的//Draw stuff here方法中肯定会出现错误。而且似乎并非每次都如此。只有在第四个消息框之后才会发生。

在绘制之前是否有一种方法可以判断是否未设置顶点着色器或像素着色器?我正在使用BasicEffect对象进行绘图。

1 个答案:

答案 0 :(得分:0)

在执行任何其他操作之前,在Draw调用开始时手动重新应用BasicEffect似乎可以解决问题。