Пример #1
0
        public void Bind(GpuProgramParameters gpuParams)
        {
            if (gpuParams != null)
            {
                Axiom.Graphics.GpuProgramParameters.GpuConstantDefinition def =
                    gpuParams.FindNamedConstantDefinition(_name);

                if (def != null)
                {
                    this._params       = gpuParams;
                    this.physicalIndex = def.PhysicalIndex;
                }
            }
        }
Пример #2
0
        protected void CompleteDefInfo(GLenum glType, Axiom.Graphics.GpuProgramParameters.GpuConstantDefinition defToUpdate)
        {
            //Decode unifrom size and type
            //Note GLSL ES never packs rows into float4's (from an API perspective anyway)
            //therefore all values are tight in the buffer
            switch (glType)
            {
            case GLenum.Float:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float1;
                break;

            case GLenum.FloatVec2:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float2;
                break;

            case GLenum.FloatVec3:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float3;
                break;

            case GLenum.FloatVec4:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Float4;
                break;

            case GLenum.Sampler2D:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Sampler2D;
                break;

            case GLenum.SamplerCube:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.SamplerCube;
                break;

            case GLenum.Int:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int1;
                break;

            case GLenum.IntVec2:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int2;
                break;

            case GLenum.IntVec3:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int3;
                break;

            case GLenum.IntVec4:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Int4;
                break;

            case GLenum.FloatMat2:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_2X2;
                break;

            case GLenum.FloatMat3:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Matrix_3X3;
                break;

            case GLenum.FloatMat4:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Unknown;
                break;

            default:
                defToUpdate.ConstantType = GpuProgramParameters.GpuConstantType.Unknown;
                break;
            }
            //GL doesn't pad
            defToUpdate.ElementSize = Axiom.Graphics.GpuProgramParameters.GpuConstantDefinition.GetElementSize(defToUpdate.ConstantType, false);
        }