source: OGRE/trunk/ogrenew/RenderSystems/GL/include/OgreGLFrameBufferObject.h @ 692

Revision 692, 2.8 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2005 The OGRE Team
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23-----------------------------------------------------------------------------
24*/
25#ifndef __OgreGLFBO_H__
26#define __OgreGLFBO_H__
27
28#include "OgreGLRenderTexture.h"
29#include "OgreGLContext.h"
30
31namespace Ogre {
32   
33    /** Frame Buffer Object abstraction.
34    */
35    class GLFrameBufferObject
36    {
37    public:
38        GLFrameBufferObject(GLFBOManager *manager);
39        ~GLFrameBufferObject();
40        //void bindSurface(size_t attachment, RenderTarget *target);
41        /** Bind a surface to a certain attachment point.
42            attachment: 0..OGRE_MAX_MULTIPLE_RENDER_TARGETS-1
43        */
44        void bindSurface(size_t attachment, const GLSurfaceDesc &target);
45        /** Unbind attachment
46        */
47        void unbindSurface(size_t attachment);
48       
49        /** Bind FrameBufferObject
50        */
51        void bind();
52       
53        /// Accessors
54        size_t getWidth();
55        size_t getHeight();
56        PixelFormat getFormat();
57       
58        GLFBOManager *getManager() { return mManager; }
59                const GLSurfaceDesc &getSurface(size_t attachment) { return mColour[attachment]; }
60    private:
61        GLFBOManager *mManager;
62        GLuint mFB;
63        GLSurfaceDesc mDepth;
64        GLSurfaceDesc mStencil;
65        // Arbitrary number of texture surfaces
66        GLSurfaceDesc mColour[OGRE_MAX_MULTIPLE_RENDER_TARGETS];
67
68                /** Initialise object (find suitable depth and stencil format).
69            Must be called every time the bindings change.
70            It fails with an exception (ERR_INVALIDPARAMS) if:
71            - Attachment point 0 has no binding
72            - Not all bound surfaces have the same size
73            - Not all bound surfaces have the same internal format
74        */
75        void initialise();
76    };
77
78}
79
80#endif
Note: See TracBrowser for help on using the repository browser.