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
11namespace gfx {
12class GLStateRestorer;
13
14class 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
31class 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