public unsafe VertexDataProcessor <T> CreateVertexDataProcessor <T>() where T : unmanaged { if (_disposed) { throw new ObjectDisposedException("Pipeline"); } var layoutDecl = VertexDataProcessor <T> .CreateLayoutFromType(0); using (var layout = new ComScopeGuard()) { fixed(InputElementDescription *d = layoutDecl) { Device.CreateInputLayout(_device.DevicePtr, d, (uint)layoutDecl.Length, Blob.GetBufferPointer(_signatureBlob), Blob.GetBufferSize(_signatureBlob), out layout.Ptr).Check(); } return(new VertexDataProcessor <T>(_device, layout.Move())); } }