UgUniformBuffer

Uniform buffer with descriptor set management

It

Uniform buffer with its descriptor set and mapped CPU pointer

struct It {
  UgBuffer.It buffer;
  VkDescriptorSetLayout setLayout;
  U0* mappedData;
  U32 binding;
  U32 size;
  VkDescriptorSet descriptorSet;
  U32 cursor;
};

create

Create a uniform buffer and allocate its descriptor set

UgUniformBuffer.It create(UgContext.It& ctx, U32 binding, U32 size);

Parameters

  • ctx — Vulkan context
  • binding — Descriptor binding index
  • size — Size of the uniform buffer in bytes

Returns — Initialized uniform buffer


bind

Bind the uniform buffer's descriptor set to the command buffer

U0 bind(UgUniformBuffer.It& uniformBuffer, VkCommandBuffer cmdBuffer, VkPipelineLayout pipelineLayout);

Parameters

  • uniformBuffer — Uniform buffer to bind
  • cmdBuffer — Active command buffer
  • pipelineLayout — Pipeline layout the descriptor set is compatible with

destroy

Destroy the uniform buffer and release its descriptor set

U0 destroy(UgContext.It& ctx, UgUniformBuffer.It& uniformBuffer);

Parameters

  • ctx — Vulkan context
  • uniformBuffer — Uniform buffer to destroy

reset

Reset the write cursor back to the beginning of the buffer

U0 reset(UgUniformBuffer.It& uniformBuffer);

Parameters

  • uniformBuffer — Uniform buffer to reset

setFloat

Write a float value at the current cursor position

U0 setFloat(UgUniformBuffer.It& buffer, F32 value);

Parameters

  • buffer — Uniform buffer to write into
  • value — Float value to write

setVec2f

Write a 2-component float vector at the current cursor position

U0 setVec2f(UgUniformBuffer.It& buffer, VectorF.It vec);

Parameters

  • buffer — Uniform buffer to write into
  • vec — Vector to write

setVec3f

Write a 3-component float vector at the current cursor position

U0 setVec3f(UgUniformBuffer.It& buffer, VectorF.It vec);

Parameters

  • buffer — Uniform buffer to write into
  • vec — Vector to write

setVec4f

Write a 4-component float vector at the current cursor position

U0 setVec4f(UgUniformBuffer.It& buffer, VectorF.It vec);

Parameters

  • buffer — Uniform buffer to write into
  • vec — Vector to write

setMat

Write a 4×4 matrix at the current cursor position

U0 setMat(UgUniformBuffer.It& buffer, Matrix.It mat);

Parameters

  • buffer — Uniform buffer to write into
  • mat — Matrix to write