0

静的な頂点/インデックスをキャッシュ/描画するために使用できる独自の描画モジュールを持つ XNA 用のコードを作成しようとしています。

これがクラスです。問題の行は51行目です。

_vertexBuffer.SetData(_vertices.ToArray());

エラーがあります:The type 'T' must be a non-nullable value type in order to use it as parameter 'T'

VertexDeclarationSetData は通常、VertexBuffers コンストラクターで使用されるものと一致する Vertices の配列を期待するため、気に入らないようですが、リスト/クラスの私の定義では、任意の型にすることができます。

とにかく<T>頂点として指定する方法はありますか?

4

1 に答える 1

2

それらはジェネリック型制約と呼ばれます。タイプが何であれ、VertexBufferそのメソッドにはこれがあります:

void SetData<T>(...) where T : struct

これがエラーの原因です。

実際、MSDN は、これがメソッド シグネチャであると述べています。

public void SetData<T> (
     T[] data
) where T : ValueType

これは本質的に同じです。

したがって、これを修正するには、参照型ではなく値型である項目の配列を渡す必要があります。つまり、 のインスタンス化は でDrawModule<T>なければなりませんDrawModule<ValueTypeHere>

于 2013-08-10T12:57:32.647 に答える