00001 /*************************************************************************** 00002 * Copyright (c) 2008 Art Tevs * 00003 * * 00004 * This library is free software; you can redistribute it and/or modify * 00005 * it under the terms of the GNU Lesser General Public License as * 00006 * published by the Free Software Foundation; either version 3 of * 00007 * the License, or (at your option) any later version. * 00008 * * 00009 * This library is distributed in the hope that it will be useful, * 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00012 * GNU Lesse General Public License for more details. * 00013 * * 00014 * The full license is in LICENSE file included with this distribution. * 00015 ***************************************************************************/ 00016 00017 #ifndef _C_UNIT_TEXTURE_H_ 00018 #define _C_UNIT_TEXTURE_H_ 00019 00020 00021 //------------------------------------------------------------------------- 00022 // Includes 00023 //------------------------------------------------------------------------- 00024 #include <osgPPU/Export.h> 00025 #include <osgPPU/Unit.h> 00026 00027 namespace osgPPU 00028 { 00029 //! Texture unit is used to setup external textures in the unit graph 00030 /** 00031 * If you like to have an external texture as input to any unit in the unit graph, 00032 * then you have to setup this behaviour with the help of this unit. Place 00033 * this unit as a parent of any other unit and its output, the texture, 00034 * will became input to that unit. 00035 **/ 00036 class OSGPPU_EXPORT UnitTexture : public Unit { 00037 public: 00038 META_Node(osgPPU,UnitTexture); 00039 00040 UnitTexture(); 00041 UnitTexture(const UnitTexture& u, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY); 00042 UnitTexture(osg::Texture* tex); 00043 00044 ~UnitTexture(); 00045 00046 void init(); 00047 00048 /** 00049 * Set a texture which is used as output of this unit. 00050 * The children will get this texture as input atomatically. 00051 **/ 00052 void setTexture(osg::Texture* tex); 00053 00054 /** 00055 * Get texture which is used as output of this unit. 00056 **/ 00057 inline osg::Texture* getTexture() { return getOutputTexture(0); } 00058 00059 private: 00060 class DrawCallback; 00061 }; 00062 }; 00063 00064 #endif
Copyright (C) 2008 by Art Tevs (LGPL)