Home | History | Annotate | Download | only in gl
      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