public string Write(IGlslShader shader)
        {
            var impl = new NestedStringBuilderImpl("  ");

            // TODO: Support different versions.
            impl.WriteLine("#version 110");

            foreach (var inVar in shader.Ins)
            {
                GlslWriter.WriteHeaderVariable_(impl, HeaderVariableType.IN, inVar);
            }
            impl.Write("\n");

            foreach (var outVar in shader.Outs)
            {
                GlslWriter.WriteHeaderVariable_(impl, HeaderVariableType.OUT, outVar);
            }
            impl.Write("\n");

            foreach (var uniformVar in shader.Uniforms)
            {
                GlslWriter.WriteHeaderVariable_(impl,
                                                HeaderVariableType.UNIFORM,
                                                uniformVar);
            }
            impl.Write("\n\n");

            foreach (var method in shader.Methods)
            {
                GlslWriter.WriteMethod_(impl, method);
                impl.Write("\n");
            }

            return(impl.ToString());
        }
Exemple #2
0
        public void TestAll()
        {
            var writer = new NestedStringBuilderImpl("  ");

            writer.Write("foo")
            .WriteLine("bar")
            .Write("(")
            .Nest("foo")
            .Nest("bar")
            .WriteLine(")")
            .Write("(")
            .Nest(
                w => w
                .WriteLine("boo")
                .WriteLine("(")
                .Nest("hoo")
                .WriteLine(")"))
            .WriteLine(")")
            .WriteLine("hello")
            .Write("goodbye");
            var actualText = writer.ToString();

            var expectedLines = new[] {
                "foobar",
                "(",
                "  foo",
                "  bar",
                ")",
                "(",
                "  boo",
                "  (",
                "    hoo",
                "  )",
                ")",
                "hello",
                "goodbye",
            };
            var expectedText = StringUtil.Concat(expectedLines, "\n");

            Expect.AreEqual(expectedText, actualText);
        }