我正在使用Silverlight 5构建一个3D应用程序。我有一个调用方法的DrawingSurface。但是,当我添加导航: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未被用户代码处理。"没有导航:Frame。
答案 0 :(得分:0)
从这段代码中我们可以得出的唯一结论是,当您输入此方法时,“vertexBuffer”为空或null。通过“DrawPrimitive”方法在本地使用的那些或一些变量。
我不知道如何填充此变量,但总体而言,当您不是100%确定事先填充的内容时,总是检查null或为空是好的做法。