Share via


IMTLFunction Interface

Definition

System protocol for shader functions that are suitable for use on a GPU in a shader or compute function.

[Foundation.Protocol(Name="MTLFunction", WrapperType=typeof(Metal.MTLFunctionWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateArgumentEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UIntPtr) }, ReturnType=typeof(Metal.IMTLArgumentEncoder), Selector="newArgumentEncoderWithBufferIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateArgumentEncoder", ParameterByRef=new System.Boolean[] { false, true }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(Metal.MTLArgument) }, ReturnType=typeof(Metal.IMTLArgumentEncoder), Selector="newArgumentEncoderWithBufferIndex:reflection:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="functionType", IsProperty=true, IsRequired=true, IsStatic=false, Name="FunctionType", PropertyType=typeof(Metal.MTLFunctionType), Selector="functionType")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="vertexAttributes", IsProperty=true, IsRequired=true, IsStatic=false, Name="VertexAttributes", PropertyType=typeof(Metal.MTLVertexAttribute[]), Selector="vertexAttributes")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="name", IsProperty=true, IsRequired=true, IsStatic=false, Name="Name", PropertyType=typeof(System.String), Selector="name")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="patchType", IsProperty=true, IsRequired=true, IsStatic=false, Name="PatchType", PropertyType=typeof(Metal.MTLPatchType), Selector="patchType")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="patchControlPointCount", IsProperty=true, IsRequired=true, IsStatic=false, Name="PatchControlPointCount", PropertyType=typeof(System.IntPtr), Selector="patchControlPointCount")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stageInputAttributes", IsProperty=true, IsRequired=true, IsStatic=false, Name="StageInputAttributes", PropertyType=typeof(Metal.MTLAttribute[]), Selector="stageInputAttributes")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="functionConstantsDictionary", IsProperty=true, IsRequired=true, IsStatic=false, Name="FunctionConstants", PropertyType=typeof(Foundation.NSDictionary<Foundation.NSString,Metal.MTLFunctionConstant>), Selector="functionConstantsDictionary")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="options", IsProperty=true, IsRequired=true, IsStatic=false, Name="Options", PropertyType=typeof(Metal.MTLFunctionOptions), Selector="options")]
public interface IMTLFunction : IDisposable, ObjCRuntime.INativeObject
[<Foundation.Protocol(Name="MTLFunction", WrapperType=typeof(Metal.MTLFunctionWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateArgumentEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UIntPtr) }, ReturnType=typeof(Metal.IMTLArgumentEncoder), Selector="newArgumentEncoderWithBufferIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateArgumentEncoder", ParameterByRef=new System.Boolean[] { false, true }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(Metal.MTLArgument) }, ReturnType=typeof(Metal.IMTLArgumentEncoder), Selector="newArgumentEncoderWithBufferIndex:reflection:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="functionType", IsProperty=true, IsRequired=true, IsStatic=false, Name="FunctionType", PropertyType=typeof(Metal.MTLFunctionType), Selector="functionType")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="vertexAttributes", IsProperty=true, IsRequired=true, IsStatic=false, Name="VertexAttributes", PropertyType=typeof(Metal.MTLVertexAttribute[]), Selector="vertexAttributes")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="name", IsProperty=true, IsRequired=true, IsStatic=false, Name="Name", PropertyType=typeof(System.String), Selector="name")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="patchType", IsProperty=true, IsRequired=true, IsStatic=false, Name="PatchType", PropertyType=typeof(Metal.MTLPatchType), Selector="patchType")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="patchControlPointCount", IsProperty=true, IsRequired=true, IsStatic=false, Name="PatchControlPointCount", PropertyType=typeof(System.IntPtr), Selector="patchControlPointCount")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stageInputAttributes", IsProperty=true, IsRequired=true, IsStatic=false, Name="StageInputAttributes", PropertyType=typeof(Metal.MTLAttribute[]), Selector="stageInputAttributes")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="functionConstantsDictionary", IsProperty=true, IsRequired=true, IsStatic=false, Name="FunctionConstants", PropertyType=typeof(Foundation.NSDictionary<Foundation.NSString,Metal.MTLFunctionConstant>), Selector="functionConstantsDictionary")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="options", IsProperty=true, IsRequired=true, IsStatic=false, Name="Options", PropertyType=typeof(Metal.MTLFunctionOptions), Selector="options")>]
type IMTLFunction = interface
    interface INativeObject
    interface IDisposable
Attributes
Implements

Properties

Name Description
Device
FunctionConstants
FunctionType
Handle

Handle (pointer) to the unmanaged object representation.

(Inherited from INativeObject)
Label
Name
Options
PatchControlPointCount
PatchType
StageInputAttributes
VertexAttributes

Methods

Name Description
CreateArgumentEncoder(UIntPtr, MTLArgument)

Creates a new argument encoder for the specified buffer index and reflection argument.

CreateArgumentEncoder(UIntPtr)

Creates a new argument encoder for the specified buffer index.

Extension Methods

Name Description
GetOptions(IMTLFunction)
GetHandle(INativeObject)
GetNonNullHandle(INativeObject, String)

Applies to