Add OpenGLSampler
This commit is contained in:
61
engine/include/XCEngine/RHI/OpenGL/OpenGLSampler.h
Normal file
61
engine/include/XCEngine/RHI/OpenGL/OpenGLSampler.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#pragma once
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
enum class SamplerWrapMode {
|
||||
Repeat,
|
||||
MirroredRepeat,
|
||||
ClampToEdge,
|
||||
ClampToBorder
|
||||
};
|
||||
|
||||
enum class SamplerFilter {
|
||||
Nearest,
|
||||
Linear,
|
||||
NearestMipmapNearest,
|
||||
LinearMipmapNearest,
|
||||
NearestMipmapLinear,
|
||||
LinearMipmapLinear
|
||||
};
|
||||
|
||||
enum class SamplerCompareMode {
|
||||
None,
|
||||
CompareToRef
|
||||
};
|
||||
|
||||
struct SamplerDesc {
|
||||
SamplerFilter minFilter = SamplerFilter::LinearMipmapLinear;
|
||||
SamplerFilter magFilter = SamplerFilter::Linear;
|
||||
SamplerWrapMode wrapS = SamplerWrapMode::Repeat;
|
||||
SamplerWrapMode wrapT = SamplerWrapMode::Repeat;
|
||||
SamplerWrapMode wrapR = SamplerWrapMode::Repeat;
|
||||
SamplerCompareMode compareMode = SamplerCompareMode::None;
|
||||
int compareFunc = 0;
|
||||
float maxAnisotropy = 1.0f;
|
||||
float minLod = -1000.0f;
|
||||
float maxLod = 1000.0f;
|
||||
};
|
||||
|
||||
class OpenGLSampler {
|
||||
public:
|
||||
OpenGLSampler();
|
||||
~OpenGLSampler();
|
||||
|
||||
bool Initialize(const SamplerDesc& desc);
|
||||
void Shutdown();
|
||||
|
||||
void Bind(unsigned int unit);
|
||||
void Unbind(unsigned int unit);
|
||||
|
||||
unsigned int GetID() const { return m_sampler; }
|
||||
|
||||
private:
|
||||
unsigned int m_sampler;
|
||||
SamplerDesc m_desc;
|
||||
};
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user