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