00001 00002 // File: FrameBufferObject.h 00003 // Author: Changchang Wu 00004 // Description : interface for the FrameBufferObject class. 00005 // 00006 // 00007 // 00008 // Copyright (c) 2007 University of North Carolina at Chapel Hill 00009 // All Rights Reserved 00010 // 00011 // Permission to use, copy, modify and distribute this software and its 00012 // documentation for educational, research and non-profit purposes, without 00013 // fee, and without a written agreement is hereby granted, provided that the 00014 // above copyright notice and the following paragraph appear in all copies. 00015 // 00016 // The University of North Carolina at Chapel Hill make no representations 00017 // about the suitability of this software for any purpose. It is provided 00018 // 'as is' without express or implied warranty. 00019 // 00020 // Please send BUG REPORTS to ccwu@cs.unc.edu 00021 // 00023 00024 00025 #if !defined(_FRAME_BUFFER_OBJECT_H) 00026 #define _FRAME_BUFFER_OBJECT_H 00027 00028 class FrameBufferObject 00029 { 00030 static GLuint GlobalFBO; //not thread-safe 00031 GLuint _fboID; 00032 public: 00033 static int UseSingleFBO; 00034 public: 00035 static void DeleteGlobalFBO(); 00036 static void UnattachTex(GLenum attachment); 00037 static void UnbindFBO(); 00038 static void AttachDepthTexture(GLenum textureTarget, GLuint texID); 00039 static void AttachTexture( GLenum textureTarget, GLenum attachment, GLuint texID); 00040 static void AttachRenderBuffer(GLenum attachment, GLuint buffID ); 00041 static void UnattachRenderBuffer(GLenum attachment); 00042 public: 00043 void BindFBO(); 00044 FrameBufferObject(int autobind = 1); 00045 ~FrameBufferObject(); 00046 00047 }; 00048 00049 #endif