Пример #1
0
        public Program GetProgram(ShaderReference reference, string shaderName = null)
        {
            if (reference == null)
            {
                return(ActiveProgram = Shaders["lightmapped"]);
            }

            switch (reference.Type)
            {
            case ShaderReference.ReferenceType.Halo2:
                MaterialShader material;
                var            tagIdent = ( TagIdent )reference.Ident;
                if (Materials.TryGetValue(tagIdent, out material))
                {
                    material.UsePass(0, LoadedTextureArrays);
                    Program shaderProgram;
                    if (shaderName != null && Shaders.TryGetValue(shaderName, out shaderProgram))
                    {
                        ActiveProgram = shaderProgram;
                        break;
                    }
                }
                ActiveProgram = Shaders["default"];
                break;

            case ShaderReference.ReferenceType.System:
                ActiveProgram = Shaders["system"];
                break;
            }
            return(ActiveProgram);
        }
Пример #2
0
 public RenderBatch(int attributeCount, int uniformCount, int stateCount)
 {
     Shader           = new ShaderReference(ShaderReference.ReferenceType.System, 0);
     Attributes       = new Dictionary <string, object>(attributeCount);
     Uniforms         = new Dictionary <string, object>(uniformCount);
     RenderStates     = new Dictionary <EnableCap, bool>(stateCount);
     PrimitiveType    = PrimitiveType.TriangleStrip;
     DrawElementsType = DrawElementsType.UnsignedShort;
 }