Ejemplo n.º 1
0
 public void TestCase()
 {
     var debug = new InfoSinkBase (SinkType.String);
     var info = new InfoSinkBase (SinkType.String);
     var infoSink = new InfoSink(info, debug);
     var intermediate = new GLSLIntermediate ();
     var symbols = new SymbolLookup ();
     symbols.SetPreambleManually (Profile.CoreProfile);
     symbols.DefineAs ("GL_ARB_shader_storage_buffer_object", 1);
     var preprocessor = new Standalone (infoSink, intermediate, symbols);
     string result;
     Assert.IsTrue(preprocessor.Run("Sample.vert", out result));
     Assert.IsNotNull (result);
 }
Ejemplo n.º 2
0
        public static int Main(string[] args)
        {
            //			try
            //			{
                if (args.Length < 2)
                {
                    Console.WriteLine("Invalid arguments");
                    Console.WriteLine("{0} {1} {n}... ");
                    Console.WriteLine("{0} = output file");
                    Console.WriteLine("{1} = glsl shader file 1");
                    Console.WriteLine("{n} = glsl shader file n");
                    return 1;
                }

                foreach(var arg in args)
                {
                    Console.WriteLine(arg);
                }

                IGLSLTypeLookup lookup = new OpenTKTypeLookup ();
                lookup.Initialize ();
                var extractor = new GLSLUniformExtractor (lookup);
                extractor.Initialize ();

                var debug = new InfoSinkBase (SinkType.StdOut);
                var info = new InfoSinkBase (SinkType.StdOut);
                var infoSink = new InfoSink (info, debug);
                var preprocessor = InitialisePreprocessor (infoSink);

                for (int i = 1; i < args.Length; ++i)
                {
                    var fileName = args[i];
                    using (var fs = File.Open(fileName, FileMode.Open))
                    {
                        var stage = Standalone.FindLanguage(fileName);
                        string result;
                        preprocessor.Run(fs, stage, out result);

                        int actual = extractor.Extract (result);
                        Console.WriteLine("{0} - no of blocks extracted : {1}", fileName, actual);
                    }
                }

                GLSLAssembly output = new GLSLAssembly ();
                output.OutputAssembly = System.IO.Path.GetFileName(args[0]);
                output.Version = "1.0.0.1";
                output.Namespace = "";
                output.Path = System.IO.Path.GetPathRoot(args[0]);
                output.ReferencedAssemblies = new string[]{"OpenTK.dll"};

                IGLSLStructGenerator generator = new GLSLStructGenerator(extractor);
                using (var provider = new CSharpCodeProvider ())
                {
                    //generator.SaveAsAssembly (provider, output);
                    var options = new CodeGeneratorOptions();
                    options.BlankLinesBetweenMembers = true;
                    generator.SaveAsCode(provider, output, extractor, options);
                }

                return 0;
            //			}
            //			catch (Exception ex)
            //			{
            //				Debug.WriteLine (ex.Message);
            //				return 1;
            //			}
            //	Test();
        }