1d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// Copyright 2016 The SwiftShader Authors. All Rights Reserved. 2d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// 3d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// Licensed under the Apache License, Version 2.0 (the "License"); 4d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// you may not use this file except in compliance with the License. 5d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// You may obtain a copy of the License at 6d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// 7d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// http://www.apache.org/licenses/LICENSE-2.0 8d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// 9d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// Unless required by applicable law or agreed to in writing, software 10d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// distributed under the License is distributed on an "AS IS" BASIS, 11d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// See the License for the specific language governing permissions and 13d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// limitations under the License. 14d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 15d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens// Sampler.h: Defines the es2::Sampler class 16d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 17d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#ifndef LIBGLESV2_SAMPLER_H_ 18d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#define LIBGLESV2_SAMPLER_H_ 19d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 20d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#include "common/Object.hpp" 21d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#include "Renderer/Renderer.hpp" 22d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 23d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#include <GLES2/gl2.h> 24d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 25d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capensnamespace es2 26d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens{ 27d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 28d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capensclass Sampler : public gl::NamedObject 29d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens{ 30d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capenspublic: 31d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens Sampler(GLuint name) : NamedObject(name) 32d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens { 33d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mMinFilter = GL_NEAREST_MIPMAP_LINEAR; 34d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mMagFilter = GL_LINEAR; 35d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 36d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mWrapModeS = GL_REPEAT; 37d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mWrapModeT = GL_REPEAT; 38d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mWrapModeR = GL_REPEAT; 39d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 40d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mMinLod = -1000.0f; 41d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mMaxLod = 1000.0f; 42d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mCompareMode = GL_NONE; 43d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens mCompareFunc = GL_LEQUAL; 44d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens } 45d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 46d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setMinFilter(GLenum minFilter) { mMinFilter = minFilter; } 47d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setMagFilter(GLenum magFilter) { mMagFilter = magFilter; } 48d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setWrapS(GLenum wrapS) { mWrapModeS = wrapS; } 49d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setWrapT(GLenum wrapT) { mWrapModeT = wrapT; } 50d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setWrapR(GLenum wrapR) { mWrapModeR = wrapR; } 51d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setMinLod(GLfloat minLod) { mMinLod = minLod; } 52d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setMaxLod(GLfloat maxLod) { mMaxLod = maxLod; } 53d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setComparisonMode(GLenum comparisonMode) { mCompareMode = comparisonMode; } 54d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void setComparisonFunc(GLenum comparisonFunc) { mCompareFunc = comparisonFunc; } 55d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 56d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getMinFilter() const { return mMinFilter; } 57d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getMagFilter() const { return mMagFilter; } 58d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getWrapS() const { return mWrapModeS; } 59d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getWrapT() const { return mWrapModeT; } 60d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getWrapR() const { return mWrapModeR; } 61d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLfloat getMinLod() const { return mMinLod; } 62d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLfloat getMaxLod() const { return mMaxLod; } 63d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getComparisonMode() const { return mCompareMode; } 64d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum getComparisonFunc() const { return mCompareFunc; } 65d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 66d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capensprivate: 67d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mMinFilter; 68d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mMagFilter; 69d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 70d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mWrapModeS; 71d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mWrapModeT; 72d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mWrapModeR; 73d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 74d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLfloat mMinLod; 75d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLfloat mMaxLod; 76d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mCompareMode; 77d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens GLenum mCompareFunc; 78d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens}; 79d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 80d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens} 81d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens 82d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens#endif // LIBGLESV2_SAMPLER_H_ 83