Add OpenGLSampler

This commit is contained in:
2026-03-16 18:52:00 +08:00
parent aee4ae88db
commit 3cd47ea4c8
3 changed files with 132 additions and 0 deletions

View 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