【问题标题】:Adding navigation:Frame causes NullReferenceException添加导航:Frame 导致 NullReferenceException
【发布时间】:2014-12-19 12:50:08
【问题描述】:

我正在使用 Silverlight 5 构建一个 3D 应用程序。我有一个调用方法的 DrawingSurface。但是,当我将 navigation:Frame 添加到我的 XAML 时,会引发错误。

这里是有问题的方法:

private void DrawingSurface_Draw(object sender, DrawEventArgs e)
{

    GraphicsDevice device = GraphicsDeviceManager.Current.GraphicsDevice;

    device.Clear(ClearOptions.Target | ClearOptions.DepthBuffer,
                 new Microsoft.Xna.Framework.Color(0, 0, 0, 0), 10.0f, 0);

    device.SetVertexBuffer(_vertexBuffer);
    device.SetVertexShader(_vertexShader);
    device.SetPixelShader(_pixelShader);
    device.Textures[0] = _texture;

    device.SamplerStates[0] = SamplerState.LinearClamp;
    device.DrawPrimitives(PrimitiveType.TriangleList, 0,
                          _vertexBuffer.VertexCount / 3);
    device.SetVertexShaderConstantFloat4(0, ref _viewProjection);

    e.InvalidateSurface();

}

错误在 device.DrawPrimitives(PrimitiveType.TriangleList, 0, _vertexBuffer.VertexCount / 3); 行。错误是“用户代码未处理 NullReferenceException”。没有导航:框架就不会发生。

【问题讨论】:

  • 我不熟悉这个。但错误表明PrimitiveType.TriangleList 和/或_vertexBuffer.VertexCount 为空。当您尝试访问它们时,它们可能没有被填充。
  • 请提供堆栈跟踪和任何内部异常。

标签: c# visual-studio-2010 silverlight xna silverlight-5.0


【解决方案1】:

从这段sn-p的代码中,我们唯一可以得出的结论是,当你进入这个方法时,“vertexBuffer”是空的或者为null。 “DrawPrimitive”方法在本地使用的那个或一些变量。

我不知道这个变量是如何填充的,但总的来说,当您不能 100% 确定预先填充的内容时,始终检查 null 或空是一种很好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多