1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/modules/webgl/oes_draw_buffers_indexed.h"
#include "third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h"
namespace blink {
OESDrawBuffersIndexed::OESDrawBuffersIndexed(WebGLRenderingContextBase* context)
: WebGLExtension(context) {
context->ExtensionsUtil()->EnsureExtensionEnabled(
"GL_OES_draw_buffers_indexed");
}
WebGLExtensionName OESDrawBuffersIndexed::GetName() const {
return kOESDrawBuffersIndexedName;
}
bool OESDrawBuffersIndexed::Supported(WebGLRenderingContextBase* context) {
return context->ExtensionsUtil()->SupportsExtension(
"GL_OES_draw_buffers_indexed");
}
const char* OESDrawBuffersIndexed::ExtensionName() {
return "OES_draw_buffers_indexed";
}
void OESDrawBuffersIndexed::enableiOES(GLenum target, GLuint index) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->EnableiOES(target, index);
}
void OESDrawBuffersIndexed::disableiOES(GLenum target, GLuint index) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->DisableiOES(target, index);
}
void OESDrawBuffersIndexed::blendEquationiOES(GLuint buf, GLenum mode) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->BlendEquationiOES(buf, mode);
}
void OESDrawBuffersIndexed::blendEquationSeparateiOES(GLuint buf,
GLenum modeRGB,
GLenum modeAlpha) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->BlendEquationSeparateiOES(buf, modeRGB,
modeAlpha);
}
void OESDrawBuffersIndexed::blendFunciOES(GLuint buf, GLenum src, GLenum dst) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->BlendFunciOES(buf, src, dst);
}
void OESDrawBuffersIndexed::blendFuncSeparateiOES(GLuint buf,
GLenum srcRGB,
GLenum dstRGB,
GLenum srcAlpha,
GLenum dstAlpha) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
scoped.Context()->ContextGL()->BlendFuncSeparateiOES(buf, srcRGB, dstRGB,
srcAlpha, dstAlpha);
}
void OESDrawBuffersIndexed::colorMaskiOES(GLuint buf,
GLboolean r,
GLboolean g,
GLboolean b,
GLboolean a) {
WebGLExtensionScopedContext scoped(this);
if (scoped.IsLost())
return;
WebGLRenderingContextBase* context = scoped.Context();
// Used in WebGLRenderingContextBase's
// DrawingBufferClientRestoreMaskAndClearValues.
if (buf == 0) {
context->color_mask_[0] = r;
context->color_mask_[1] = g;
context->color_mask_[2] = b;
context->color_mask_[3] = a;
}
context->ContextGL()->ColorMaskiOES(buf, r, g, b, a);
}
} // namespace blink
|