2.2 KiB
2.2 KiB
OpenGLSampler
OpenGL 采样器实现。
头文件
#include <XCEngine/RHI/OpenGL/OpenGLSampler.h>
继承关系
RHISampler (interface)
└── OpenGLSampler (implementation)
枚举
SamplerWrapMode
| 值 | OpenGL 常量 |
|---|---|
Repeat |
GL_REPEAT |
MirroredRepeat |
GL_MIRRORED_REPEAT |
ClampToEdge |
GL_CLAMP_TO_EDGE |
ClampToBorder |
GL_CLAMP_TO_BORDER |
SamplerFilter
| 值 | OpenGL 常量 |
|---|---|
Nearest |
GL_NEAREST |
Linear |
GL_LINEAR |
NearestMipmapNearest |
GL_NEAREST_MIPMAP_NEAREST |
LinearMipmapNearest |
GL_LINEAR_MIPMAP_NEAREST |
NearestMipmapLinear |
GL_NEAREST_MIPMAP_LINEAR |
LinearMipmapLinear |
GL_LINEAR_MIPMAP_LINEAR |
SamplerCompareMode
| 值 | OpenGL 常量 |
|---|---|
None |
GL_NONE |
CompareToRef |
GL_COMPARE_REF_TO_TEXTURE |
OpenGLSamplerDesc
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;
};
公共成员函数
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
void* GetNativeHandle() override
内部成员
| 成员 | 类型 | 描述 |
|---|---|---|
m_sampler |
unsigned int |
GL sampler ID |
m_desc |
OpenGLSamplerDesc |
采样器描述 |
使用示例
OpenGLSampler sampler;
OpenGLSamplerDesc desc;
desc.minFilter = SamplerFilter::LinearMipmapLinear;
desc.magFilter = SamplerFilter::Linear;
desc.wrapS = desc.wrapT = SamplerWrapMode::Repeat;
desc.maxAnisotropy = 16.0f;
sampler.Initialize(desc);
sampler.Bind(0);
glBindTextureUnit(0, texture.GetID());