- Simplify OpenGL integration test structure - Enable CTest registration for OpenGL tests - Refactor test fixtures and device enumeration - Minor code cleanup and improvements
65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "../RHISampler.h"
|
|
#include "../RHITypes.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 OpenGLSamplerDesc {
|
|
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 RHISampler {
|
|
public:
|
|
OpenGLSampler();
|
|
~OpenGLSampler() override;
|
|
|
|
bool Initialize(const OpenGLSamplerDesc& desc);
|
|
void Shutdown() override;
|
|
|
|
void Bind(unsigned int unit) override;
|
|
void Unbind(unsigned int unit) override;
|
|
|
|
unsigned int GetID() const { return m_sampler; }
|
|
unsigned int GetID() override { return m_sampler; }
|
|
void* GetNativeHandle() override { return reinterpret_cast<void*>(static_cast<uintptr_t>(m_sampler)); }
|
|
|
|
private:
|
|
unsigned int m_sampler;
|
|
OpenGLSamplerDesc m_desc;
|
|
};
|
|
|
|
} // namespace RHI
|
|
} // namespace XCEngine
|