誰でも助けてください。ここにある MSDN からプリミティブを描画するチュートリアルに従っています。
コードを少しリファクタリングしようとしています。そのために、チュートリアルのすべてのコードを配置した MyPrimitives というクラスを作成しました。次に、たとえば Game11 Initialize() から myPrimitive.Initialize() などを呼び出すことができます。
しかし、MyPrimitives の CreateVertexBuffer() メソッドの次のコード行で NullReferenceException が発生します。
vertexBuffer = new VertexBuffer(
graphics.GraphicsDevice,
vertexDeclaration,
number_of_vertices,
BufferUsage.None
);
そして、CreateVertexBuffer() は MyPrimitives Initialize() メソッドから次のように呼び出されます。
public void Initialize()
{
CreateVertexBuffer();
}
そして、この Initialize() は、次のように Game1 Initialize() から呼び出されます。
protected override void Initialize()
{
myPrimitiveDrawer = new MyPrimitiveDrawer();
myPrimitiveDrawer.Initialize();
base.Initialize();
}
グラフィック [GraphicsDeviceManager グラフィックス] をオブジェクトのインスタンスに設定していないことが原因であることはわかっていますが、実際にこれを行うにはどうすればよいですか? 私が試してみました:
public void Initialize()
{
graphics = new GraphicsDeviceManager(this); // Tried this
CreateVertexBuffer();
}
しかし、それは無効な引数のエラーを与えるだけです。
誰か提案がありますか?