| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "config.h" |
| |
| #include "modules/webgl/WebGLSampler.h" |
| |
| #include "modules/webgl/WebGL2RenderingContextBase.h" |
| |
| namespace blink { |
| |
| WebGLSamplerState::WebGLSamplerState() |
| : compreFunc(GL_LEQUAL) |
| , compreMode(GL_NONE) |
| , magFilter(GL_LINEAR) |
| , minFilter(GL_NEAREST_MIPMAP_LINEAR) |
| , wrapR(GL_REPEAT) |
| , wrapS(GL_REPEAT) |
| , wrapT(GL_REPEAT) |
| , maxLod(1000.0f) |
| , minLod(-1000.0f) |
| { |
| } |
| |
| WebGLSampler* WebGLSampler::create(WebGL2RenderingContextBase* ctx) |
| { |
| return new WebGLSampler(ctx); |
| } |
| |
| WebGLSampler::~WebGLSampler() |
| { |
| // See the comment in WebGLObject::detachAndDeleteObject(). |
| detachAndDeleteObject(); |
| } |
| |
| WebGLSampler::WebGLSampler(WebGL2RenderingContextBase* ctx) |
| : WebGLSharedPlatform3DObject(ctx) |
| { |
| setObject(ctx->webContext()->createSampler()); |
| } |
| |
| void WebGLSampler::deleteObjectImpl(WebGraphicsContext3D* context3d) |
| { |
| context3d->deleteSampler(m_object); |
| m_object = 0; |
| } |
| |
| void WebGLSampler::setParameteri(GLenum pname, GLint param) |
| { |
| ASSERT(object()); |
| |
| switch (pname) { |
| case GL_TEXTURE_MAX_LOD: |
| case GL_TEXTURE_MIN_LOD: |
| { |
| GLfloat fparam = static_cast<GLfloat>(param); |
| setParameterf(pname, fparam); |
| return; |
| } |
| case GL_TEXTURE_COMPARE_FUNC: |
| m_state.compreFunc = param; |
| break; |
| case GL_TEXTURE_COMPARE_MODE: |
| m_state.compreMode = param; |
| break; |
| case GL_TEXTURE_MAG_FILTER: |
| m_state.magFilter = param; |
| break; |
| case GL_TEXTURE_MIN_FILTER: |
| m_state.minFilter = param; |
| break; |
| case GL_TEXTURE_WRAP_R: |
| m_state.wrapR = param; |
| break; |
| case GL_TEXTURE_WRAP_S: |
| m_state.wrapS = param; |
| break; |
| case GL_TEXTURE_WRAP_T: |
| m_state.wrapT = param; |
| break; |
| default: |
| ASSERT_NOT_REACHED(); |
| return; |
| } |
| } |
| |
| void WebGLSampler::setParameterf(GLenum pname, GLfloat param) |
| { |
| ASSERT(object()); |
| |
| switch (pname) { |
| case GL_TEXTURE_COMPARE_FUNC: |
| case GL_TEXTURE_COMPARE_MODE: |
| case GL_TEXTURE_MAG_FILTER: |
| case GL_TEXTURE_MIN_FILTER: |
| case GL_TEXTURE_WRAP_R: |
| case GL_TEXTURE_WRAP_S: |
| case GL_TEXTURE_WRAP_T: |
| { |
| GLint iparam = static_cast<GLint>(param); |
| setParameteri(pname, iparam); |
| return; |
| } |
| case GL_TEXTURE_MAX_LOD: |
| m_state.maxLod = param; |
| break; |
| case GL_TEXTURE_MIN_LOD: |
| m_state.minLod = param; |
| break; |
| default: |
| ASSERT_NOT_REACHED(); |
| return; |
| } |
| } |
| |
| } // namespace blink |