23#ifndef VCL_BGFX_READ_FRAMEBUFFER_REQUEST_H
24#define VCL_BGFX_READ_FRAMEBUFFER_REQUEST_H
27#include <vclib/render/read_buffer_types.h>
28#include <vclib/space/core/color.h>
29#include <vclib/space/core/point.h>
35class ReadFramebufferRequest
38 using FloatData = ReadBufferTypes::FloatData;
39 using ByteData = ReadBufferTypes::ByteData;
40 using ReadData = ReadBufferTypes::ReadData;
41 using CallbackReadBuffer = ReadBufferTypes::CallbackReadBuffer;
43 enum class Type : uint8_t {
51 ReadFramebufferRequest(
53 Point2<uint> framebufferSize,
54 CallbackReadBuffer callback,
55 const Color& clearColor = Color::Black);
58 ReadFramebufferRequest(
59 Point2<uint> framebufferSize,
60 CallbackReadBuffer callback,
61 const Color& clearColor = Color::Black);
64 ReadFramebufferRequest(
66 Point2<uint> framebufferSize,
68 CallbackReadBuffer callback);
70 ~ReadFramebufferRequest();
72 ReadFramebufferRequest& operator=(ReadFramebufferRequest&& right) =
default;
76 bgfx::ViewId viewId()
const;
78 bgfx::FrameBufferHandle frameBuffer()
const;
82 bool isSubmitted()
const;
84 bool isAvailable(uint32_t currentFrame)
const;
86 [[nodiscard]]
bool performRead(uint32_t currFrame)
const;
90 Type mType = Type::COUNT;
93 uint32_t mFrameAvailable = 0;
98 bgfx::FrameBufferHandle mOffscreenFbh = BGFX_INVALID_HANDLE;
100 bgfx::ViewId mViewOffscreenId = 0;
103 bgfx::TextureHandle mBlitTexture = BGFX_INVALID_HANDLE;
104 Point2<uint16_t> mBlitSize = {0, 0};
106 ReadData mReadData = {};
108 CallbackReadBuffer mReadCallback =
nullptr;
110 bool mSubmitted =
false;
Point2< int > Point2i
A convenience alias for a 2-dimensional Point with integer components.
Definition point.h:706