Files
Renderive/YSGraphic_Core/CacheModel.h
T
2026-07-23 11:10:17 +08:00

22 lines
689 B
C++

#pragma once
#include "RenderAble.h"
namespace YSG{
template<typename T>
struct CacheModel {
std::array<T, 3> buffers;
Triple_Role_Buffer_Control control;
SpinLock mLock;
void syncStatePipeline() {
auto lease = control.wait_mark_use_role(State_Ready);
buffers[lease.index] = *state(SRC::Edit);
control.unmark_use(lease);
control.wait_swap_role(State_Ready, State_Render, [](const Triple_Buffer_View&) {
return true;
});
}
T* state(SRC src = SRC::Render) {
return &buffers[control.read_view()[static_cast<std::uint8_t>(src)]];
}
};
}