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