class RenderableObjectStorageBase

Contains render thread representation of renderable objects, stored in packed arrays accessible by PackedRendererId.

Implements main -> render thread synchronization logic for renderable objects.

Public

Methods

SyncRead

void *SyncRead(ecs::Registry &registry, FrameAllocator &allocator) override

Scans the provided registry for dirty objects, generates the update packets and stores them into a batch buffer allocated by .

Returns pointer to the batch buffer memory.

SyncWrite

void SyncWrite(void *batchData, FrameAllocator &allocator) override

Applies data from a batch buffer generated by SyncRead to objects on the render thread, and frees the frame-allocated batch data via .

GetRenderableProxy

render::RenderableProxy &GetRenderableProxy(PackedRendererId slotId)

Returns the renderable proxy at the given slot.

GetRenderableProxy

const render::RenderableProxy &GetRenderableProxy(PackedRendererId slotId) const

Returns the renderable proxy at the given slot (const).

GetRenderableCount

u32 GetRenderableCount() const

Returns the total number of renderables.

CreateRenderState

virtual void CreateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each new renderable being added, or a renderable whose data needs to be rebuilt after a significant update (in which case DestroyRenderState will be called first).

DestroyRenderState

virtual void DestroyRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each renderable that is being removed, or a renderable that needs to be rebuilt after a significant update (in which case CreateRenderState will be called right after).

UpdateRenderState

virtual void UpdateRenderState(TArrayView<const PackedRendererId> slotIds) = 0

Called once per frame for each renderable that needs to be updated after a minor update (e.g. one that doesn't require a full render state rebuild, such as a transform change).

Protected

Fields

mRenderableProxies