MTLRenderPassColorAttachmentDescriptor.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using static Veldrid.MetalBindings.ObjectiveCRuntime;
  3. namespace Veldrid.MetalBindings
  4. {
  5. public struct MTLRenderPassColorAttachmentDescriptor
  6. {
  7. public readonly IntPtr NativePtr;
  8. public MTLRenderPassColorAttachmentDescriptor(IntPtr ptr) => NativePtr = ptr;
  9. public MTLTexture texture
  10. {
  11. get => objc_msgSend<MTLTexture>(NativePtr, Selectors.texture);
  12. set => objc_msgSend(NativePtr, Selectors.setTexture, value.NativePtr);
  13. }
  14. public MTLLoadAction loadAction
  15. {
  16. get => (MTLLoadAction)uint_objc_msgSend(NativePtr, Selectors.loadAction);
  17. set => objc_msgSend(NativePtr, Selectors.setLoadAction, (uint)value);
  18. }
  19. public MTLStoreAction storeAction
  20. {
  21. get => (MTLStoreAction)uint_objc_msgSend(NativePtr, Selectors.storeAction);
  22. set => objc_msgSend(NativePtr, Selectors.setStoreAction, (uint)value);
  23. }
  24. public MTLTexture resolveTexture
  25. {
  26. get => objc_msgSend<MTLTexture>(NativePtr, Selectors.resolveTexture);
  27. set => objc_msgSend(NativePtr, Selectors.setResolveTexture, value.NativePtr);
  28. }
  29. public MTLClearColor clearColor
  30. {
  31. get
  32. {
  33. if (ObjectiveCRuntime.UseStret<MTLClearColor>())
  34. {
  35. return objc_msgSend_stret<MTLClearColor>(NativePtr, sel_clearColor);
  36. }
  37. else
  38. {
  39. return MTLClearColor_objc_msgSend(NativePtr,sel_clearColor);
  40. }
  41. }
  42. set => objc_msgSend(NativePtr, sel_setClearColor, value);
  43. }
  44. public UIntPtr slice
  45. {
  46. get => UIntPtr_objc_msgSend(NativePtr, Selectors.slice);
  47. set => objc_msgSend(NativePtr, Selectors.setSlice, value);
  48. }
  49. public UIntPtr level
  50. {
  51. get => UIntPtr_objc_msgSend(NativePtr, Selectors.level);
  52. set => objc_msgSend(NativePtr, Selectors.setLevel, value);
  53. }
  54. private static readonly Selector sel_clearColor = "clearColor";
  55. private static readonly Selector sel_setClearColor = "setClearColor:";
  56. }
  57. }