|  | // Copyright (c) 2012 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. | 
|  |  | 
|  | #ifndef UI_GL_SCOPED_BINDERS_H_ | 
|  | #define UI_GL_SCOPED_BINDERS_H_ | 
|  |  | 
|  | #include "base/basictypes.h" | 
|  | #include "ui/gl/gl_export.h" | 
|  |  | 
|  | namespace gfx { | 
|  | class GLStateRestorer; | 
|  |  | 
|  | class GL_EXPORT ScopedFrameBufferBinder { | 
|  | public: | 
|  | explicit ScopedFrameBufferBinder(unsigned int fbo); | 
|  | ~ScopedFrameBufferBinder(); | 
|  |  | 
|  | private: | 
|  | // Whenever possible we prefer to use the current GLContext's | 
|  | // GLStateRestorer to maximize driver compabitility. | 
|  | GLStateRestorer* state_restorer_; | 
|  |  | 
|  | // Failing that we use GL calls to save and restore state. | 
|  | int old_fbo_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(ScopedFrameBufferBinder); | 
|  | }; | 
|  |  | 
|  |  | 
|  | class GL_EXPORT ScopedTextureBinder { | 
|  | public: | 
|  | ScopedTextureBinder(unsigned int target, unsigned int id); | 
|  | ~ScopedTextureBinder(); | 
|  |  | 
|  | private: | 
|  | // Whenever possible we prefer to use the current GLContext's | 
|  | // GLStateRestorer to maximize driver compabitility. | 
|  | GLStateRestorer* state_restorer_; | 
|  |  | 
|  | // Failing that we use GL calls to save and restore state. | 
|  | int target_; | 
|  | int old_id_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(ScopedTextureBinder); | 
|  | }; | 
|  |  | 
|  | }  // namespace gfx | 
|  |  | 
|  | #endif  // UI_GL_SCOPED_BINDERS_H_ |