任何人都可以请帮忙。我正在关注从此处找到的 MSDN 绘制原语的教程。
我正在尝试对代码进行一点重构,为此我创建了一个名为 MyPrimitives 的类,其中放置了教程中的所有代码。然后从例如 Game11 Initialize() 我可以调用 myPrimitive.Initialize() 等。
但是我在 MyPrimitives CreateVertexBuffer() 方法的这行代码中得到了 NullReferenceException:
vertexBuffer = new VertexBuffer(
graphics.GraphicsDevice,
vertexDeclaration,
number_of_vertices,
BufferUsage.None
);
并且从 MyPrimitives Initialize() 方法调用 CreateVertexBuffer(),如下所示:
public void Initialize()
{
CreateVertexBuffer();
}
并且 THIS Initialize() 是从 Game1 Initialize() 调用的,如下所示:
protected override void Initialize()
{
myPrimitiveDrawer = new MyPrimitiveDrawer();
myPrimitiveDrawer.Initialize();
base.Initialize();
}
我知道问题是因为我没有将我的 graphis [GraphicsDeviceManager graphics] 设置为一个对象的实例,但我实际上该怎么做呢?我试过了:
public void Initialize()
{
graphics = new GraphicsDeviceManager(this); // Tried this
CreateVertexBuffer();
}
但这只会给出无效参数的错误。
请问有人有什么建议吗?