50 lines
654 B
C++
50 lines
654 B
C++
#pragma once
|
|
|
|
|
|
namespace lt {
|
|
|
|
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:
|
|
virtual ~Blender() = default;
|
|
static auto create(const Ref<SharedContext> &sharedContext) -> Scope<Blender>;
|
|
|
|
virtual void enable(BlendFactor srcFactor, BlendFactor dstFactor) = 0;
|
|
|
|
virtual void disable() = 0;
|
|
|
|
protected:
|
|
Blender() = default;
|
|
};
|
|
|
|
} // namespace lt
|