/// <summary> /// セットする /// </summary> public void Set(D3D11_INPUT_ELEMENT_DESC_EX o) { SemanticType = o.SemanticType; SemanticNo = o.SemanticNo; SemanticName = o.SemanticName; SemanticIndex = o.SemanticIndex; Format = o.Format; Slot = o.Slot; AlignedByteOffset = o.AlignedByteOffset; Classification = o.Classification; InstanceDataStepRate = o.InstanceDataStepRate; }
/// <summary> /// セットする /// </summary> /// <param name="a"></param> /// <param name="b">セマティク名の最後につく番号(0-9) 例えば、0と入力した場合、POSTION なら POTION0 となる。9より大きい数値の場合、番号はつかない。</param> /// <param name="c">要素のセマンティクス インデックスです。セマンティクス インデックスは、整数のインデックス番号によってセマンティクスを修飾するものです。 /// セマンティクス インデックスは、同じセマンティクスの要素が複数ある場合にのみ必要です。 /// たとえば、4x4 のマトリクスには 4 個の構成要素があり、それぞれの構成要素にはセマンティクス名として matrix が付けられますが、 /// 4 個の構成要素にはそれぞれ異なるセマンティクス インデックス(0、1、2、3) が割り当てられます。 /// </param> /// <param name="d">要素データのデータ型です。「DXGI_FORMAT」を参照してください。</param> /// <param name="e">入力アセンブラーを識別する整数値です(「入力スロット」を参照してください)。有効な値は 0 ~ 15 であり、D3D11.h で定義されています。</param> /// <param name="f">(省略可能)各要素間のオフセット(バイト単位) です。前の要素の直後で現在の要素を定義するには、D3D11_APPEND_ALIGNED_ELEMENT を使用すると便利です。必要に応じてパッキング処理も指定できます。</param> /// <param name="g">単一の入力スロットの入力データ クラスを識別します(「D3D11_INPUT_CLASSIFICATION」を参照してください)。</param> /// <param name="h">バッファーの中で要素の 1 つ分進む前に、インスタンス単位の同じデータを使用して描画するインスタンスの数です。 /// 頂点単位のデータを持つ要素(スロット クラスは InputClassification.PerVertexData に設定されています) では、この値が 0 であることが必要です。</param> public void Set(MC_SEMANTIC a, int b, int c, Format d, int e, int f, InputClassification g, int h) { SemanticType = a; SemanticNo = b > 9 ? 10 : b; // シェーダー入力署名でこの要素に関連付けられている HLSL セマンティクスです。 SemanticName = DefinedSemanticName.Get(a, SemanticNo); SemanticIndex = c; Format = d; Slot = e; AlignedByteOffset = f; Classification = g; InstanceDataStepRate = h; }
/// <summary> /// D3D11_INPUT_ELEMENT_DESCの値をセットする。オフセット値は内部で計算しセットする。 /// </summary> /// <param name="semanticType">シェーダー入力署名でこの要素に関連付けられている HLSL セマンティクス名の種類</param> /// <param name="semanticNo">semanticTypeの名前の最後につく番号。10以上は付かない</param> /// <param name="semanticIndex">要素のセマンティクス インデックスです</param> /// <param name="format">要素データのデータ型です</param> /// <param name="inputSlot">入力アセンブラーを識別する整数値です</param> /// <param name="inputSlotClass">単一の入力スロットの入力データ クラスを識別します</param> /// <param name="instanceDataStepRate">バッファーの中で要素の 1 つ分進む前に、インスタンス単位の同じデータを使用して描画するインスタンスの数です</param> /// <returns>D3D11_INPUT_ELEMENT_DESCの総数を返す。</returns> public int DeclarationElementInsert( MC_SEMANTIC semanticType, int semanticNo, int semanticIndex, Format format, int inputSlot, InputClassification inputSlotClass, int instanceDataStepRate ) { D3D11_INPUT_ELEMENT_DESC_EX element = new D3D11_INPUT_ELEMENT_DESC_EX(); element.Set( semanticType, semanticNo, semanticIndex, format, inputSlot, -1, inputSlotClass, instanceDataStepRate ); //D3DX11_PASS_DESC pass; if (m_vaVertexElement.Count != 0) { element.AlignedByteOffset = m_offset; } m_offset += GetFormatSize(format); m_vaVertexElement.Add(element); return(m_vaVertexElement.Count); }
public D3D11_INPUT_ELEMENT_DESC_EX(string name, int index, Format format, int offset, int slot, InputClassification slotClass, int stepRate) { element = new InputElement(name, index, format, offset, slot, slotClass, stepRate); SemanticType = 0; SemanticNo = 0; }
public D3D11_INPUT_ELEMENT_DESC_EX(string name, int index, Format format, int offset, int slot) { element = new InputElement(name, index, format, offset, slot); SemanticType = 0; SemanticNo = 0; }
public static string Get(MC_SEMANTIC i, int semanticNo) { return(aSemanticName[(int)i, semanticNo]); }