2022-03-08 21:19:19 +03:30
|
|
|
#pragma once
|
|
|
|
|
2025-07-10 13:29:03 +03:30
|
|
|
|
2022-03-08 21:19:19 +03:30
|
|
|
|
2025-07-11 00:05:48 +03:30
|
|
|
namespace lt {
|
2022-03-08 21:19:19 +03:30
|
|
|
|
|
|
|
class SharedContext;
|
|
|
|
|
|
|
|
enum class BlendFactor : uint8_t
|
|
|
|
{
|
|
|
|
// constants
|
|
|
|
ZERO,
|
|
|
|
ONE,
|
|
|
|
|
|
|
|
// source
|
|
|
|
SRC_COLOR,
|
|
|
|
INVERSE_SRC_COLOR,
|
|
|
|
|
|
|
|
SRC_ALPHA,
|
|
|
|
INVERSE_SRC_ALPHA,
|
|
|
|
|
|
|
|
// destination
|
|
|
|
DST_COLOR,
|
|
|
|
INVERSE_DST_COLOR,
|
|
|
|
|
|
|
|
DST_ALPHA,
|
|
|
|
INVERSE_DST_ALPHA,
|
|
|
|
|
|
|
|
// source1
|
|
|
|
SRC1_COLOR,
|
|
|
|
INVERSE_SRC1_COLOR,
|
|
|
|
|
|
|
|
SRC1_ALPHA,
|
|
|
|
INVERSE_SRC1_ALPHA,
|
|
|
|
};
|
|
|
|
|
|
|
|
class Blender
|
|
|
|
{
|
|
|
|
public:
|
2025-07-06 16:52:50 +03:30
|
|
|
virtual ~Blender() = default;
|
|
|
|
static auto create(const Ref<SharedContext>& sharedContext) -> Scope<Blender>;
|
2022-03-08 21:19:19 +03:30
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
virtual void enable(BlendFactor srcFactor, BlendFactor dstFactor) = 0;
|
2025-07-06 14:02:50 +03:30
|
|
|
|
2025-07-05 16:07:51 +03:30
|
|
|
virtual void disable() = 0;
|
2022-03-08 21:19:19 +03:30
|
|
|
|
|
|
|
protected:
|
|
|
|
Blender() = default;
|
|
|
|
};
|
|
|
|
|
2025-07-11 00:05:48 +03:30
|
|
|
} // namespace lt
|