コード例 #1
0
        /// <summary>
        /// テクニック名の追加
        /// </summary>
        /// <param name="idx">テクニックインデックス</param>
        /// <param name="name">idxのパラメーター名</param>
        /// <param name="type">name 型のタイプ</param>
        /// <param name="arySize">typeが配列の場合、そのサイズ</param>
        /// <returns></returns>
        public int RegisterAddPara(int idx, string name, UtilValueType type, int arySize = 0)
        {
            MCUtilValueEX    p = new MCUtilValueEX();
            MC_EFF_VALUE_MGR pTmp;

            if (m_TPars.Count <= idx)
            {
                throw new Exception("RegisterAddPara(" + idx + "," + name + ") テクニックインデックスが不正です");
            }

            pTmp = m_TPars[idx];

            if (pTmp.index.ContainsKey(name))
            {
                throw new Exception("RegisterAddPara(" + idx + "," + name + ") 変数が既に登録されています");
            }



            switch (type)
            {
            case UtilValueType.FLOAT:
            case UtilValueType.ARY_FLOAT:
            case UtilValueType.BOOL:
            case UtilValueType.ARY_BOOL:
            case UtilValueType.INT:
            case UtilValueType.ARY_INT:
                p.sv = m_spCoreEffect.GetVariableByName(name).AsScalar();
                if (!p.sv.IsValid)
                {
                    return(-1);
                }
                break;

            case UtilValueType.FLOAT2:
            case UtilValueType.FLOAT3:
                p.vv = m_spCoreEffect.GetVariableByName(name).AsVector();
                if (!p.vv.IsValid)
                {
                    return(-1);
                }
                break;

            case UtilValueType.FLOAT4x4:
                p.mv = m_spCoreEffect.GetVariableByName(name).AsMatrix();
                if (!p.mv.IsValid)
                {
                    return(-1);
                }
                break;
            }
            p.Create(type, arySize);

            pTmp.item.Add(p);
            pTmp.index.Add(name, pTmp.item.Count - 1);
            return(pTmp.item.Count - 1);
        }
コード例 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 protected void GetVariableMatrix(out EffectMatrixVariable val, string name)
 {
     val = m_coreEffect.GetVariableByName(name).AsMatrix();
     if (!val.IsValid)
     {
         throw new Exception("変数が存在しません。エフェクトファイル[common.hlsl]内に" +
                             name +
                             "が存在しません。");
     }
 }