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