| 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: modulatemultitexturingeffectgl.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.7 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.6 2004/11/03 14:45:06 saar 00034 // Class comment changed (Doxygen style) 00035 // 00036 // Revision 1.5 2004/03/12 16:28:40 baumann 00037 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00038 // 00039 // Revision 1.4 2004/01/19 11:43:58 baumann 00040 // serialization mechanism improved 00041 // 00042 // Revision 1.3 2002/12/17 11:57:17 baumann 00043 // automatic chaining of serveral effects implemented (explicit chaining is not supported any more) 00044 // 00045 // Revision 1.2 2002/11/25 11:01:35 kirsch 00046 // removed "pragma once" (not portable) 00047 // 00048 // Revision 1.1 2002/11/23 09:48:49 baumann 00049 // new attributes added: 00050 // - TexturingEffectGL (abstract base class) 00051 // - AdditiveMultiTexturingEffectGL 00052 // - InterpolatedMultiTexturingEffectGL 00053 // - ModulateMultiTexturingEffectGL 00054 // 00055 00056 #ifndef VRS_OPENGL_MODULATEMULTITEXTURINGEFFECTGL_H 00057 #define VRS_OPENGL_MODULATEMULTITEXTURINGEFFECTGL_H 00058 00059 #include <vrs/opengl/texturingeffectgl.h> 00060 #include <vrs/container/iterator.h> 00061 00062 namespace VRS { 00063 00064 // forward declaration of some VRS classes 00065 class TexGenGL; 00066 class TextureGL; 00067 00083 class VRS_CORE_API ModulateMultiTexturingEffectGL : public TexturingEffectGL { 00084 00085 public: 00086 ModulateMultiTexturingEffectGL(Iterator<SO<TextureGL> >* textures = NULL, 00087 Iterator<SO<TexGenGL> >* texGens = NULL, 00088 bool shaded = false); 00089 /*<! This constructor sets the textures to be modulated 00090 (iterator pointer can be NULL, elements of the iterator 00091 should not be NULL), the corresponding texture coordinate 00092 generators (iterator pointer can be NULL, individual 00093 elements of the iterator can be NULL, too), and the 00094 shaded flag. */ 00095 00096 Iterator<SO<TextureGL> >* getTextures() const; 00097 /*<! This method returns the textures which should be modulated 00098 (can return NULL). */ 00099 00100 void setTextures(Iterator<SO<TextureGL> >* textures); 00101 /*<! This method sets the textures which should be modulated; 00102 NULL can be specified which disables this effect. 00103 The individual elements of the iterator should not be 00104 NULL. */ 00105 00106 Iterator<SO<TexGenGL> >* getTexGens() const; 00107 /*<! This method returns the texture coordinate generators which 00108 should be used for the corresponding textures (can return 00109 NULL). */ 00110 00111 void setTexGens(Iterator<SO<TexGenGL> >* texGens); 00112 /*<! This method sets the texture coordinate generators which 00113 should be used for the corresponding textures; NULL can 00114 be specified; individual elements of the iterator can 00115 be NULL, too. */ 00116 00117 using TexturingEffectGL::setShaded; 00118 /*<! Allow the setting of the shaded flag 00119 (this method is protected in the base class). */ 00120 00121 VRS_TYPEINFO(ModulateMultiTexturingEffectGL, TexturingEffectGL); 00122 VRS_SERIALIZABLE(ModulateMultiTexturingEffectGL); 00123 00124 private: 00125 SO<Iterator<SO<TextureGL> > > textures_; 00126 SO<Iterator<SO<TexGenGL> > > texGens_; 00127 }; 00128 00129 } // namespace VRS 00130 00131 #endif // VRS_OPENGL_MODULATEMULTITEXTURINGEFFECTGL_H