| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /****************************************************************************** 00002 * VRS - The Virtual Rendering System 00003 * Copyright (C) 2002 Computer Graphics Systems Group at the 00004 * Hasso-Plattner-Institute (HPI), Potsdam, Germany. 00005 * 00006 * This library is free software; you can redistribute it and/or modify it 00007 * under the terms of the GNU Lesser General Public License as published by 00008 * the Free Software Foundation; either version 2.1 of the License, or (at 00009 * your option) any later version. This library is distributed in the hope 00010 * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 00011 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU Lesser General Public License for more details. You should have received 00013 * a copy of the GNU Lesser+ General Public License along with this library; if 00014 * not, write to the FreeSoftware Foundation, Inc., 59 Temple Place, Suite 330, 00015 * Boston, MA, 02111-1307, USA. 00016 ******************************************************************************/ 00017 00018 // $Id: decalmultitexturingeffectgl.h 6014 2007-08-09 07:51:16Z Konstantin_Baumann $ 00019 // $Date: 2007-08-09 09:51:16 +0200 (Thu, 09 Aug 2007) $ 00020 // $Revision: 6014 $ 00021 // $State$ 00022 // $Author: Konstantin_Baumann $ 00023 // 00024 // $Log$ 00025 // Revision 1.8 2005/01/03 01:43:09 klimetschek 00026 // - modified win32 project layout, splitted vrs.vcproj into vrs_container, vrs_core, vrs_sg, vrs_image, vrs_opengl and vrs_io 00027 // - removed vrs.vcproj 00028 // minor things: 00029 // - added all glutexamples to vrs4glut.sln 00030 // - fixed some problems in glutexamples 00031 // - removed all project references from all VS projects (using solution wide project dependencies instead) 00032 // 00033 // Revision 1.7 2004/11/03 14:45:06 saar 00034 // Class comment changed (Doxygen style) 00035 // 00036 // Revision 1.6 2004/03/12 16:28:40 baumann 00037 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00038 // 00039 // Revision 1.5 2004/01/19 11:43:58 baumann 00040 // serialization mechanism improved 00041 // 00042 // Revision 1.4 2003/07/23 17:04:49 baumann 00043 // code cleanup (especially untabified) 00044 // 00045 // Revision 1.3 2002/12/17 11:57:17 baumann 00046 // automatic chaining of serveral effects implemented (explicit chaining is not supported any more) 00047 // 00048 // Revision 1.2 2002/12/12 18:41:02 baumann 00049 // history added 00050 // 00051 00052 #ifndef VRS_OPENGL_DECALMULTITEXTURINGEFFECTGL_H 00053 #define VRS_OPENGL_DECALMULTITEXTURINGEFFECTGL_H 00054 00055 #include <vrs/opengl/texturingeffectgl.h> 00056 #include <vrs/container/iterator.h> 00057 00058 namespace VRS { 00059 00060 // forward declaration of some VRS classes 00061 class TexGenGL; 00062 class TextureGL; 00063 00080 class VRS_CORE_API DecalMultiTexturingEffectGL : public TexturingEffectGL { 00081 00082 public: 00083 DecalMultiTexturingEffectGL(Iterator<SO<TextureGL> >* textures = NULL, 00084 Iterator<SO<TexGenGL> >* texGens = NULL, 00085 bool shaded = false); 00086 /*<! This constructor sets the textures to be decaled 00087 (iterator pointer can be NULL, elements of the iterator 00088 should not be NULL), the corresponding texture coordinate 00089 generators (iterator pointer can be NULL, individual 00090 elements of the iterator can be NULL, too), and the 00091 shaded flag. */ 00092 00093 Iterator<SO<TextureGL> >* getTextures() const; 00094 /*<! This method returns the textures which should be modulated 00095 (can return NULL). */ 00096 00097 void setTextures(Iterator<SO<TextureGL> >* textures); 00098 /*<! This method sets the textures which should be decaled; 00099 NULL can be specified which disables this effect. 00100 The individual elements of the iterator should not be 00101 NULL. */ 00102 00103 Iterator<SO<TexGenGL> >* getTexGens() const; 00104 /*<! This method returns the texture coordinate generators which 00105 should be used for the corresponding textures (can return 00106 NULL). */ 00107 00108 void setTexGens(Iterator<SO<TexGenGL> >* texGens); 00109 /*<! This method sets the texture coordinate generators which 00110 should be used for the corresponding textures; NULL can 00111 be specified; individual elements of the iterator can 00112 be NULL, too. */ 00113 00114 using TexturingEffectGL::setShaded; 00115 /*<! Allow the setting of the shaded flag 00116 (this method is protected in the base class). */ 00117 00118 VRS_TYPEINFO(DecalMultiTexturingEffectGL, TexturingEffectGL); 00119 VRS_SERIALIZABLE(DecalMultiTexturingEffectGL); 00120 00121 private: 00122 SO<Iterator<SO<TextureGL> > > textures_; 00123 SO<Iterator<SO<TexGenGL> > > texGens_; 00124 }; 00125 00126 } // namespace VRS 00127 00128 #endif // VRS_OPENGL_DECALMULTITEXTURINGEFFECTGL_H