| // |
| // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // Sampler.h : Defines the Sampler class, which represents a GLES 3 |
| // sampler object. Sampler objects store some state needed to sample textures. |
| |
| #ifndef LIBANGLE_SAMPLER_H_ |
| #define LIBANGLE_SAMPLER_H_ |
| |
| #include "libANGLE/angletypes.h" |
| #include "libANGLE/Debug.h" |
| #include "libANGLE/RefCountObject.h" |
| |
| namespace rx |
| { |
| class GLImplFactory; |
| class SamplerImpl; |
| } |
| |
| namespace gl |
| { |
| |
| class Sampler final : public RefCountObject, public LabeledObject |
| { |
| public: |
| Sampler(rx::GLImplFactory *factory, GLuint id); |
| ~Sampler() override; |
| |
| Error onDestroy(const Context *context) override; |
| |
| void setLabel(const std::string &label) override; |
| const std::string &getLabel() const override; |
| |
| void setMinFilter(GLenum minFilter); |
| GLenum getMinFilter() const; |
| |
| void setMagFilter(GLenum magFilter); |
| GLenum getMagFilter() const; |
| |
| void setWrapS(GLenum wrapS); |
| GLenum getWrapS() const; |
| |
| void setWrapT(GLenum wrapT); |
| GLenum getWrapT() const; |
| |
| void setWrapR(GLenum wrapR); |
| GLenum getWrapR() const; |
| |
| void setMaxAnisotropy(float maxAnisotropy); |
| float getMaxAnisotropy() const; |
| |
| void setMinLod(GLfloat minLod); |
| GLfloat getMinLod() const; |
| |
| void setMaxLod(GLfloat maxLod); |
| GLfloat getMaxLod() const; |
| |
| void setCompareMode(GLenum compareMode); |
| GLenum getCompareMode() const; |
| |
| void setCompareFunc(GLenum compareFunc); |
| GLenum getCompareFunc() const; |
| |
| void setSRGBDecode(GLenum sRGBDecode); |
| GLenum getSRGBDecode() const; |
| |
| const SamplerState &getSamplerState() const; |
| |
| rx::SamplerImpl *getImplementation() const; |
| |
| void syncState(const Context *context); |
| |
| private: |
| SamplerState mState; |
| rx::SamplerImpl *mImpl; |
| |
| std::string mLabel; |
| }; |
| |
| } // namespace gl |
| |
| #endif // LIBANGLE_SAMPLER_H_ |