public static void parse(String url, String src, OnShadersParsed onload) { List <shader_t> shaders = new List <shader_t>(); ShaderTokenizer tokens = new ShaderTokenizer(src); // Parse a shader while (!tokens.EOF()) { String name = tokens.next(); shader_t shader = ShaderParser.parseShader(name, tokens); if (shader != null) { shader.url = url; if (shader.stages != null) { for (var i = 0; i < shader.stages.Count; ++i) { // Build a OpenGL shader program out of the stage parameters set here shader.stages[i].shaderSrc = ShaderParser.buildShaderSource(shader, shader.stages[i]); } } } shaders.Add(shader); } // Send shaders to gl Thread onload(shaders); }