Пример #1
0
        public override void Apply(RenderParamsListArray paramsListArry)
        {
            // apply effect parameters
            for (int i = 0; i < m_Effect.Description.GlobalVariableCount; ++i)
            {
                var effectVar = m_Effect.GetVariableByIndex(i);
                var name = effectVar.Description.Name;
                var type = effectVar.GetVariableType();

                switch (type.Description.TypeName)
                {
                    case "float":
                        {
                            float v;
                            if (paramsListArry.TryGetFloat(name, out v))    effectVar.AsScalar().Set(v);
                        } break;
                    case "float4":
                        {
                            Vector4 v;
                            if (paramsListArry.TryGetFloat4(name, out v))    effectVar.AsVector().Set(v);
                        } break;
                    case "float4x4":
                        {
                            Matrix v;
                            if (paramsListArry.TryGetFloat4x4(name, out v)) effectVar.AsMatrix().SetMatrix(v);
                        }break;
                }
            }

            // apply effect state
            GetMainTechnique().Apply(m_D3dDevice.ImmediateContext);
        }
Пример #2
0
        public override void Apply(RenderParamsListArray paramsListArry)
        {
            // apply effect parameters
            for (int i = 0; i < m_Effect.Description.GlobalVariableCount; ++i)
            {
                var effectVar = m_Effect.GetVariableByIndex(i);
                var name      = effectVar.Description.Name;
                var type      = effectVar.GetVariableType();

                switch (type.Description.TypeName)
                {
                case "float":
                {
                    float v;
                    if (paramsListArry.TryGetFloat(name, out v))
                    {
                        effectVar.AsScalar().Set(v);
                    }
                } break;

                case "float4":
                {
                    Vector4 v;
                    if (paramsListArry.TryGetFloat4(name, out v))
                    {
                        effectVar.AsVector().Set(v);
                    }
                } break;

                case "float4x4":
                {
                    Matrix v;
                    if (paramsListArry.TryGetFloat4x4(name, out v))
                    {
                        effectVar.AsMatrix().SetMatrix(v);
                    }
                } break;
                }
            }

            // apply effect state
            GetMainTechnique().Apply(m_D3dDevice.ImmediateContext);
        }