Chromium Code Reviews| Index: ui/gl/scoped_binders.cc |
| diff --git a/ui/gl/scoped_binders.cc b/ui/gl/scoped_binders.cc |
| index bb2b290105622a9823b49b284d6bbd72aa6f36bc..0d6389a6b11c177e6d1704eb3c4a78b76e44757a 100644 |
| --- a/ui/gl/scoped_binders.cc |
| +++ b/ui/gl/scoped_binders.cc |
| @@ -47,8 +47,11 @@ ScopedTextureBinder::ScopedTextureBinder(unsigned int target, unsigned int id) |
| case GL_TEXTURE_EXTERNAL_OES: |
| target_getter = GL_TEXTURE_BINDING_EXTERNAL_OES; |
| break; |
| + case GL_TEXTURE_RECTANGLE_ARB: |
| + target_getter = GL_TEXTURE_BINDING_RECTANGLE_ARB; |
| + break; |
| default: |
| - NOTIMPLEMENTED() << "Target not part of OpenGL ES 2.0 spec."; |
| + NOTIMPLEMENTED() << " Target not supported."; |
| } |
| glGetIntegerv(target_getter, &old_id_); |
| } |
| @@ -65,4 +68,43 @@ ScopedTextureBinder::~ScopedTextureBinder() { |
| } |
| } |
| +ScopedUseProgram::ScopedUseProgram(unsigned int program) : old_program_(-1) { |
| + glGetIntegerv(GL_CURRENT_PROGRAM, &old_program_); |
| + glUseProgram(program); |
| +} |
| + |
| +ScopedUseProgram::~ScopedUseProgram() { |
| + glUseProgram(old_program_); |
| +} |
| + |
| +ScopedEnableVertexAttribArray::ScopedEnableVertexAttribArray(unsigned int index) |
| + : enabled_(0), index_(index) { |
|
reveman
2015/10/29 22:08:04
s/0/GL_FALSE/
Daniele Castagna
2015/10/30 23:51:57
Done.
|
| + glGetVertexAttribiv(index, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled_); |
| + glEnableVertexAttribArray(index); |
| +} |
| + |
| +ScopedEnableVertexAttribArray::~ScopedEnableVertexAttribArray() { |
| + if (!enabled_) { |
|
reveman
2015/10/29 22:08:04
if (enabled_ == GL_FALSE)
Daniele Castagna
2015/10/30 23:51:57
Done.
|
| + glDisableVertexAttribArray(index_); |
| + } |
| +} |
| + |
| +ScopedBufferBinder::ScopedBufferBinder(unsigned int target, unsigned int id) |
| + : target_(target), old_id_(-1) { |
| + GLenum target_getter = 0; |
| + switch (target) { |
| + case GL_ARRAY_BUFFER: |
| + target_getter = GL_ARRAY_BUFFER_BINDING; |
| + break; |
| + default: |
| + NOTIMPLEMENTED() << " Target not supported."; |
| + } |
| + glGetIntegerv(target_getter, &old_id_); |
| + glBindBuffer(target_, id); |
| +} |
| + |
| +ScopedBufferBinder::~ScopedBufferBinder() { |
| + glBindBuffer(target_, old_id_); |
| +} |
| + |
| } // namespace gfx |