28 #ifndef BERSERK_GLVAOCACHE_HPP
29 #define BERSERK_GLVAOCACHE_HPP
37 #include <unordered_map>
140 void CreateVaoObject(
const GLVaoDescriptor &descriptor, GLVaoValue &vao)
const;
141 void ReleaseVaoObject(
const GLVaoValue &vao)
const;
143 std::unordered_map<GLVaoKey, GLVaoValue> mEntries;
#define BRK_NS_END
Definition: Config.hpp:48
#define BRK_API
Definition: Config.hpp:32
#define BRK_NS
Definition: Config.hpp:50
std::uint32_t uint32
Definition: Typedefs.hpp:44
static BRK_API Crc32Hash Hash(const void *buffer, size_t size)
Definition: Crc32.cpp:108
Cache of opengl vertex array objects.
Definition: GLVaoCache.hpp:119
BRK_API ~GLVaoCache()
Definition: GLVaoCache.cpp:37
static const uint32 RELEASE_FREQUENCY
Definition: GLVaoCache.hpp:121
BRK_API GLuint GetOrCreateVao(const GLVaoDescriptor &descriptor)
Definition: GLVaoCache.cpp:44
BRK_API void GC()
Definition: GLVaoCache.cpp:66
static const uint32 TIME_TO_KEEP
Definition: GLVaoCache.hpp:122
BRK_API GLVaoCache(uint32 releaseFrequency=RELEASE_FREQUENCY, uint32 timeToKeep=TIME_TO_KEEP)
Definition: GLVaoCache.cpp:33
static int Compare(const void *a, const void *b, size_t sizeInBytes)
Definition: Memory.hpp:85
static void Set(void *destination, int value, size_t sizeInBytes)
Definition: Memory.hpp:71
void Reset(T *ptr=nullptr)
Definition: Ref.hpp:112
Definition: GLDevice.cpp:46
Definition: TQuat.hpp:431
Descriptor of vertex array object.
Definition: GLVaoCache.hpp:51
std::array< Ref< RHIVertexBuffer >, RHILimits::MAX_VERTEX_BUFFERS > buffers
Definition: GLVaoCache.hpp:52
Ref< RHIVertexDeclaration > declaration
Definition: GLVaoCache.hpp:54
void Reset()
Definition: GLVaoCache.hpp:56
Ref< RHIIndexBuffer > indices
Definition: GLVaoCache.hpp:53
Key of vertex array object in the cache.
Definition: GLVaoCache.hpp:67
Crc32Hash hash
Definition: GLVaoCache.hpp:71
Ref< RHIIndexBuffer > indices
Definition: GLVaoCache.hpp:69
void Setup(const GLVaoDescriptor &descriptor)
Initialize key from descriptor.
Definition: GLVaoCache.hpp:74
bool operator==(const GLVaoKey &other) const
Fast compare op.
Definition: GLVaoCache.hpp:83
std::array< Ref< RHIVertexBuffer >, RHILimits::MAX_VERTEX_BUFFERS > buffers
Definition: GLVaoCache.hpp:68
Ref< RHIVertexDeclaration > declaration
Definition: GLVaoCache.hpp:70
static const uint32 MAX_VERTEX_BUFFERS
Definition: RHIDefs.hpp:317
size_t operator()(const BRK_NS::GLVaoKey &key) const
Definition: GLVaoCache.hpp:101