InstanceData

InstanceData interface.

Overview

Typical use cases:

  • Defining a common interface for graphic batch handling

Header

<RaeptorCogs/GAPI/Common/Core/InstanceData.hpp>

Metadata

Author

Estorc

Version

v1.0

Copyright

Copyright (c) 2025 Estorc MIT License.

Types

Type Definitions

Type

Description

RaeptorCogs::GAPI::Common::DynamicInstanceData

No description.

RaeptorCogs::GAPI::Common::DynamicInstanceDataBuffer

No description.

RaeptorCogs::GAPI::Common::StaticInstanceDataBuffer

No description.

using RaeptorCogs::GAPI::Common::DynamicInstanceData = float
using RaeptorCogs::GAPI::Common::DynamicInstanceDataBuffer = std::vector<float>
using RaeptorCogs::GAPI::Common::StaticInstanceDataBuffer = std::vector<StaticInstanceData>

Structs

Structures

Struct

Description

RaeptorCogs::GAPI::Common::InstanceData

No description.

RaeptorCogs::GAPI::Common::StaticInstanceData

No description.

struct InstanceData

Public Functions

inline StaticInstanceDataBuffer &getStatic()
inline DynamicInstanceDataBuffer &getDynamic()

Private Members

StaticInstanceDataBuffer staticData
DynamicInstanceDataBuffer dynamicData
struct StaticInstanceData

Public Members

glm::mat4 model
glm::vec4 uvRect
int type
unsigned int dataOffset
int writingMaskID
int readingMaskID

Classes

Classes

Class

Description

RaeptorCogs::GAPI::Common::InstanceAllocator

No description.

RaeptorCogs::GAPI::Common::InstanceUploader

No description.

class InstanceAllocator

Public Functions

inline InstanceAllocator(InstanceData &instanceData)
void allocate(GraphicBatchHandler &batchHandler, size_t dynamicDataSize)
void free(GraphicBatchHandler &batchHandler)
StaticInstanceData &getStaticInstanceData(size_t offset)
DynamicInstanceData *getDynamicInstanceData(size_t offset)

Private Functions

size_t allocateStaticData()
size_t allocateDynamicData(size_t size)
void freeStaticData(size_t begin, size_t end)
void freeDynamicData(size_t begin, size_t end)

Private Members

InstanceData &instanceData
RegionAllocator freeStaticDataRegionsAllocator
RegionAllocator freeDynamicDataRegionsAllocator
class InstanceUploader

Public Functions

inline InstanceUploader(InstanceData &instanceData)
void markStaticDataDirty(size_t offset, size_t size)
void markDynamicDataDirty(size_t offset, size_t size)
void upload(RaeptorCogs::GAPI::ObjectHandler<SSBO> *staticInstanceDataSSBO, RaeptorCogs::GAPI::ObjectHandler<SSBO> *dynamicInstanceDataSSBO)

Private Members

InstanceData &instanceData
RegionBuffer dirtyStaticDataRegions
RegionBuffer dirtyDynamicDataRegions