You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

68 line
2.5 KiB

  1. unit uvkuBufferViewFactory;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils,
  6. Vulkan, uvkuBufferView, uvkuFactoryBase;
  7. type
  8. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. TvkuBufferViewFactory = class(TvkuDeviceObjFactory)
  10. private
  11. fFlags: VkBufferViewCreateFlags;
  12. fBuffer: VkBuffer;
  13. fFormat: TVkFormat;
  14. fOffset: VkDeviceSize;
  15. fRange: VkDeviceSize;
  16. public
  17. property Flags: VkBufferViewCreateFlags read fFlags write fFlags;
  18. property Buffer: VkBuffer read fBuffer write fBuffer;
  19. property Format: TVkFormat read fFormat write fFormat;
  20. property Offset: VkDeviceSize read fOffset write fOffset;
  21. property Range: VkDeviceSize read fRange write fRange;
  22. function GetStructure: TVkBufferViewCreateInfo;
  23. procedure SetStructure(const aData: TVkBufferViewCreateInfo);
  24. function CreateBufferView: TvkuBufferView;
  25. end;
  26. implementation
  27. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  28. //TvkuBufferViewFactory//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  29. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  30. function TvkuBufferViewFactory.GetStructure: TVkBufferViewCreateInfo;
  31. begin
  32. FillByte(result, SizeOf(result), 0);
  33. result.sType := VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
  34. result.pNext := nil;
  35. result.flags := fFlags;
  36. result.buffer := fBuffer;
  37. result.format := fFormat;
  38. result.offset := fOffset;
  39. result.range := fRange;
  40. end;
  41. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  42. procedure TvkuBufferViewFactory.SetStructure(const aData: TVkBufferViewCreateInfo);
  43. begin
  44. fFlags := aData.flags;
  45. fBuffer := aData.buffer;
  46. fFormat := aData.format;
  47. fOffset := aData.offset;
  48. fRange := aData.range;
  49. end;
  50. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  51. function TvkuBufferViewFactory.CreateBufferView: TvkuBufferView;
  52. begin
  53. result := TvkuBufferView.Create(GetStructure, DeviceCommands, AllocCallbacks);
  54. end;
  55. end.