예제 #1
0
파일: Mesh.cs 프로젝트: aologos/Citrus
 private void UpdateInputLayout()
 {
     if (inputLayout == null || (DirtyFlags & MeshDirtyFlags.AttributeLocations) != 0)
     {
         var elements = new List <VertexInputElement>();
         var stride   = Toolbox.SizeOf <T>();
         foreach (var elementDescription in GetElementDescriptions())
         {
             elements.Add(new VertexInputElement {
                 Slot      = 0,
                 Attribute = AttributeLocations[elements.Count],
                 Stride    = stride,
                 Offset    = elementDescription.Offset,
                 Format    = elementDescription.Format,
             });
         }
         inputLayout = VertexInputLayout.New(elements.ToArray());
         DirtyFlags &= ~MeshDirtyFlags.AttributeLocations;
     }
 }
예제 #2
0
파일: Mesh.cs 프로젝트: x5f3759df/Citrus
 private void UpdateInputLayout()
 {
     if (inputLayout == null || (DirtyFlags & MeshDirtyFlags.AttributeLocations) != 0)
     {
         var bindings = new[] {
             new VertexInputLayoutBinding {
                 Slot   = 0,
                 Stride = sizeof(T)
             }
         };
         var attributes = new List <VertexInputLayoutAttribute>();
         foreach (var elementDescription in GetElementDescriptions())
         {
             attributes.Add(new VertexInputLayoutAttribute {
                 Slot     = 0,
                 Location = AttributeLocations[attributes.Count],
                 Offset   = elementDescription.Offset,
                 Format   = elementDescription.Format,
             });
         }
         inputLayout = VertexInputLayout.New(bindings, attributes.ToArray());
         DirtyFlags &= ~MeshDirtyFlags.AttributeLocations;
     }
 }