예제 #1
0
 private void EmitVertexInputsGetter(ShaderSetProcessorInput input, CsCodeWriter ccw)
 {
     using (ccw.PushBlock($"public static VertexInputDescription[] GetVertexInputs()"))
     {
         ccw.WriteLine($"return new VertexInputDescription[]");
         using (ccw.PushBlock(null, ";"))
         {
             ccw.WriteLine("new VertexInputDescription(");
             ccw.IncreaseIndentation();
             ParameterDefinition[] vsParams = input.VertexFunction.Parameters;
             foreach (ParameterDefinition param in vsParams)
             {
                 StructureDefinition sd = input.Model.GetStructureDefinition(param.Type);
                 foreach (FieldDefinition fd in sd.Fields)
                 {
                     string              name     = fd.Name;
                     VertexSemanticType  semantic = GetSemantic(fd.SemanticType);
                     VertexElementFormat format   = GetFormat(fd.Type);
                     ccw.Write($"new VertexInputElement(\"{name}\", VertexSemanticType.{semantic}, VertexElementFormat.{format})");
                     if (fd == sd.Fields.Last())
                     {
                         ccw.WriteLine(")");
                     }
                     else
                     {
                         ccw.WriteLine(",");
                     }
                 }
             }
             ccw.DecreaseIndentation();
         }
     }
 }
예제 #2
0
 public void Dispose()
 {
     _cw.DecreaseIndentation();
     _cw.Write("}");
     if (_trailing != null)
     {
         _cw.Write(_trailing);
     }
     _cw.WriteLine();
 }