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); }
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; }