unit uvkuBufferViewFactory; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Vulkan, uvkuBufferView, uvkuFactoryBase; type ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TvkuBufferViewFactory = class(TvkuDeviceObjFactory) private fFlags: VkBufferViewCreateFlags; fBuffer: VkBuffer; fFormat: TVkFormat; fOffset: VkDeviceSize; fRange: VkDeviceSize; public property Flags: VkBufferViewCreateFlags read fFlags write fFlags; property Buffer: VkBuffer read fBuffer write fBuffer; property Format: TVkFormat read fFormat write fFormat; property Offset: VkDeviceSize read fOffset write fOffset; property Range: VkDeviceSize read fRange write fRange; function GetStructure: TVkBufferViewCreateInfo; procedure SetStructure(const aData: TVkBufferViewCreateInfo); function CreateBufferView: TvkuBufferView; end; implementation ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TvkuBufferViewFactory////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TvkuBufferViewFactory.GetStructure: TVkBufferViewCreateInfo; begin FillByte(result, SizeOf(result), 0); result.sType := VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; result.pNext := nil; result.flags := fFlags; result.buffer := fBuffer; result.format := fFormat; result.offset := fOffset; result.range := fRange; end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TvkuBufferViewFactory.SetStructure(const aData: TVkBufferViewCreateInfo); begin fFlags := aData.flags; fBuffer := aData.buffer; fFormat := aData.format; fOffset := aData.offset; fRange := aData.range; end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TvkuBufferViewFactory.CreateBufferView: TvkuBufferView; begin result := TvkuBufferView.Create(GetStructure, DeviceCommands, AllocCallbacks); end; end.