// // 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.cpp : Implements the Sampler class, which represents a GLES 3 // sampler object. Sampler objects store some state needed to sample textures. #include "libANGLE/Sampler.h" #include "libANGLE/angletypes.h" #include "libANGLE/renderer/GLImplFactory.h" #include "libANGLE/renderer/SamplerImpl.h" namespace gl { Sampler::Sampler(rx::GLImplFactory *factory, GLuint id) : RefCountObject(id), mState(), mImpl(factory->createSampler(mState)), mLabel() { } Sampler::~Sampler() { SafeDelete(mImpl); } Error Sampler::onDestroy(const Context *context) { return NoError(); } void Sampler::setLabel(const std::string &label) { mLabel = label; } const std::string &Sampler::getLabel() const { return mLabel; } void Sampler::setMinFilter(GLenum minFilter) { mState.minFilter = minFilter; } GLenum Sampler::getMinFilter() const { return mState.minFilter; } void Sampler::setMagFilter(GLenum magFilter) { mState.magFilter = magFilter; } GLenum Sampler::getMagFilter() const { return mState.magFilter; } void Sampler::setWrapS(GLenum wrapS) { mState.wrapS = wrapS; } GLenum Sampler::getWrapS() const { return mState.wrapS; } void Sampler::setWrapT(GLenum wrapT) { mState.wrapT = wrapT; } GLenum Sampler::getWrapT() const { return mState.wrapT; } void Sampler::setWrapR(GLenum wrapR) { mState.wrapR = wrapR; } GLenum Sampler::getWrapR() const { return mState.wrapR; } void Sampler::setMaxAnisotropy(float maxAnisotropy) { mState.maxAnisotropy = maxAnisotropy; } float Sampler::getMaxAnisotropy() const { return mState.maxAnisotropy; } void Sampler::setMinLod(GLfloat minLod) { mState.minLod = minLod; } GLfloat Sampler::getMinLod() const { return mState.minLod; } void Sampler::setMaxLod(GLfloat maxLod) { mState.maxLod = maxLod; } GLfloat Sampler::getMaxLod() const { return mState.maxLod; } void Sampler::setCompareMode(GLenum compareMode) { mState.compareMode = compareMode; } GLenum Sampler::getCompareMode() const { return mState.compareMode; } void Sampler::setCompareFunc(GLenum compareFunc) { mState.compareFunc = compareFunc; } GLenum Sampler::getCompareFunc() const { return mState.compareFunc; } void Sampler::setSRGBDecode(GLenum sRGBDecode) { mState.sRGBDecode = sRGBDecode; } GLenum Sampler::getSRGBDecode() const { return mState.sRGBDecode; } const SamplerState &Sampler::getSamplerState() const { return mState; } rx::SamplerImpl *Sampler::getImplementation() const { return mImpl; } void Sampler::syncState(const Context *context) { // TODO(jmadill): Use actual dirty bits for sampler. mImpl->syncState(context); } } // namespace gl