Commit e29d1672 by Jamie Madill Committed by Shannon Woods

Add mutator methods for modifying sampler object parameters.

TRAC #23453 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Authored-by: Jamie Madill
parent dc35604b
...@@ -3061,6 +3061,50 @@ void Context::setVertexAttribDivisor(GLuint index, GLuint divisor) ...@@ -3061,6 +3061,50 @@ void Context::setVertexAttribDivisor(GLuint index, GLuint divisor)
getCurrentVertexArray()->setVertexAttribDivisor(index, divisor); getCurrentVertexArray()->setVertexAttribDivisor(index, divisor);
} }
void Context::samplerParameteri(GLuint sampler, GLenum pname, GLint param)
{
mResourceManager->checkSamplerAllocation(sampler);
Sampler *samplerObject = getSampler(sampler);
ASSERT(samplerObject);
switch (pname)
{
case GL_TEXTURE_MIN_FILTER: samplerObject->setMinFilter(static_cast<GLenum>(param)); break;
case GL_TEXTURE_MAG_FILTER: samplerObject->setMagFilter(static_cast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_S: samplerObject->setWrapS(static_cast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_T: samplerObject->setWrapT(static_cast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_R: samplerObject->setWrapR(static_cast<GLenum>(param)); break;
case GL_TEXTURE_MIN_LOD: samplerObject->setMinLod(static_cast<GLfloat>(param)); break;
case GL_TEXTURE_MAX_LOD: samplerObject->setMaxLod(static_cast<GLfloat>(param)); break;
case GL_TEXTURE_COMPARE_MODE: samplerObject->setComparisonMode(static_cast<GLenum>(param)); break;
case GL_TEXTURE_COMPARE_FUNC: samplerObject->setComparisonFunc(static_cast<GLenum>(param)); break;
default: UNREACHABLE(); break;
}
}
void Context::samplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
{
mResourceManager->checkSamplerAllocation(sampler);
Sampler *samplerObject = getSampler(sampler);
ASSERT(samplerObject);
switch (pname)
{
case GL_TEXTURE_MIN_FILTER: samplerObject->setMinFilter(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_MAG_FILTER: samplerObject->setMagFilter(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_S: samplerObject->setWrapS(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_T: samplerObject->setWrapT(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_WRAP_R: samplerObject->setWrapR(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_MIN_LOD: samplerObject->setMinLod(param); break;
case GL_TEXTURE_MAX_LOD: samplerObject->setMaxLod(param); break;
case GL_TEXTURE_COMPARE_MODE: samplerObject->setComparisonMode(RoundedGLFloatCast<GLenum>(param)); break;
case GL_TEXTURE_COMPARE_FUNC: samplerObject->setComparisonFunc(RoundedGLFloatCast<GLenum>(param)); break;
default: UNREACHABLE(); break;
}
}
// keep list sorted in following order // keep list sorted in following order
// OES extensions // OES extensions
// EXT extensions // EXT extensions
......
...@@ -314,6 +314,9 @@ class Context ...@@ -314,6 +314,9 @@ class Context
void setVertexAttribi(GLuint index, const GLint values[4]); void setVertexAttribi(GLuint index, const GLint values[4]);
void setVertexAttribDivisor(GLuint index, GLuint divisor); void setVertexAttribDivisor(GLuint index, GLuint divisor);
void samplerParameteri(GLuint sampler, GLenum pname, GLint param);
void samplerParameterf(GLuint sampler, GLenum pname, GLfloat param);
Buffer *getBuffer(GLuint handle); Buffer *getBuffer(GLuint handle);
Fence *getFence(GLuint handle); Fence *getFence(GLuint handle);
Shader *getShader(GLuint handle); Shader *getShader(GLuint handle);
......
...@@ -20,6 +20,16 @@ class Sampler : public RefCountObject ...@@ -20,6 +20,16 @@ class Sampler : public RefCountObject
public: public:
Sampler(GLuint id); Sampler(GLuint id);
void setMinFilter(GLenum minFilter) { mMinFilter = minFilter; }
void setMagFilter(GLenum magFilter) { mMagFilter = magFilter; }
void setWrapS(GLenum wrapS) { mWrapS = wrapS; }
void setWrapT(GLenum wrapT) { mWrapT = wrapT; }
void setWrapR(GLenum wrapR) { mWrapR = wrapR; }
void setMinLod(GLfloat minLod) { mMinLod = minLod; }
void setMaxLod(GLfloat maxLod) { mMaxLod = maxLod; }
void setComparisonMode(GLenum comparisonMode) { mComparisonMode = comparisonMode; }
void setComparisonFunc(GLenum comparisonFunc) { mComparisonFunc = comparisonFunc; }
private: private:
GLenum mMinFilter; GLenum mMinFilter;
GLenum mMagFilter; GLenum mMagFilter;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment