1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_GL_SCOPED_BINDERS_H_ 6 #define UI_GL_SCOPED_BINDERS_H_ 7 8 #include "base/basictypes.h" 9 #include "ui/gl/gl_export.h" 10 11 namespace gfx { 12 class GLStateRestorer; 13 14 class GL_EXPORT ScopedFrameBufferBinder { 15 public: 16 explicit ScopedFrameBufferBinder(unsigned int fbo); 17 ~ScopedFrameBufferBinder(); 18 19 private: 20 // Whenever possible we prefer to use the current GLContext's 21 // GLStateRestorer to maximize driver compabitility. 22 GLStateRestorer* state_restorer_; 23 24 // Failing that we use GL calls to save and restore state. 25 int old_fbo_; 26 27 DISALLOW_COPY_AND_ASSIGN(ScopedFrameBufferBinder); 28 }; 29 30 31 class GL_EXPORT ScopedTextureBinder { 32 public: 33 ScopedTextureBinder(unsigned int target, unsigned int id); 34 ~ScopedTextureBinder(); 35 36 private: 37 // Whenever possible we prefer to use the current GLContext's 38 // GLStateRestorer to maximize driver compabitility. 39 GLStateRestorer* state_restorer_; 40 41 // Failing that we use GL calls to save and restore state. 42 int target_; 43 int old_id_; 44 45 DISALLOW_COPY_AND_ASSIGN(ScopedTextureBinder); 46 }; 47 48 } // namespace gfx 49 50 #endif // UI_GL_SCOPED_BINDERS_H_ 51