# OgreGLRenderTexture.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2005 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025
    00026 #ifndef __GLRENDERTEXTURE_H__
    00027 #define __GLRENDERTEXTURE_H__
    00028
    00029 #include "OgreGLTexture.h"
    00030
    00031 namespace Ogre {
    00034     struct GLSurfaceDesc
    00035     {
    00036     public:
    00037         GLHardwarePixelBuffer *buffer;
    00038         size_t zoffset;
    00039     };
    00040
    00043     class GLRenderTexture: public RenderTexture
    00044     {
    00045     public:
    00046         GLRenderTexture(const String &name, const GLSurfaceDesc &target);
    00047         virtual ~GLRenderTexture();
    00048
    00049         bool requiresTextureFlipping() const { return true; }
    00050     };
    00051
    00054     class GLRTTManager: public Singleton<GLRTTManager>
    00055     {
    00056     public:
    00057         virtual ~GLRTTManager();
    00058
    00061         virtual RenderTexture *createRenderTexture(const String &name, const GLSurfaceDesc &target) = 0;
    00062
    00065         virtual bool checkFormat(PixelFormat format) = 0;
    00066
    00069         virtual void bind(RenderTarget *target) = 0;
    00070
    00075         virtual void unbind(RenderTarget *target) = 0;
    00076
    00079         virtual MultiRenderTarget* createMultiRenderTarget(const String & name);
    00080
    00083         virtual PixelFormat getSupportedAlternative(PixelFormat format);
    00084     };
    00085
    00088     class GLCopyingRTTManager;
    00089     class GLCopyingRenderTexture: public GLRenderTexture
    00090     {
    00091     public:
    00092         GLCopyingRenderTexture(GLCopyingRTTManager *manager, const String &name, const GLSurfaceDesc &target);
    00093
    00094         virtual void getCustomAttribute(const String& name, void* pData);
    00095     };
    00096
    00100     class GLCopyingRTTManager: public GLRTTManager
    00101     {
    00102     public:
    00103         GLCopyingRTTManager();
    00104         virtual ~GLCopyingRTTManager();
    00105
    00108         virtual RenderTexture *createRenderTexture(const String &name, const GLSurfaceDesc &target);
    00109
    00112         virtual bool checkFormat(PixelFormat format);
    00113
    00116         virtual void bind(RenderTarget *target);
    00117
    00120         virtual void unbind(RenderTarget *target);
    00121     };
    00122 }
    00123
    00124 #endif // __GLTEXTURE_H__

Copyright © 2000-2005 by The OGRE Team
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 17 15:39:08 2006