| 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: interpolatedmultitexturingeffectgl.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_INTERPOLATEDMULTITEXTURINGEFFECTGL_H 00057 #define VRS_OPENGL_INTERPOLATEDMULTITEXTURINGEFFECTGL_H 00058 00059 #include <vrs/opengl/texturingeffectgl.h> 00060 00061 namespace VRS { 00062 00063 // forward declaration of some VRS classes 00064 class TexGenGL; 00065 class TextureGL; 00066 00084 class VRS_CORE_API InterpolatedMultiTexturingEffectGL : public TexturingEffectGL { 00085 public: 00086 InterpolatedMultiTexturingEffectGL(TextureGL* interpolator, 00087 TextureGL* texture1, TextureGL* texture2, 00088 TexGenGL* interpolatorTexGen = NULL, 00089 TexGenGL* texGen1 = NULL, TexGenGL* texGen2 = NULL, 00090 bool shaded = false); 00091 /*<! This constructor sets the interpolation texture (must be 00092 an alpha texture), the two textures to interpolate between, 00093 the corresponding texture coordinate generators (can be NULL), 00094 and the shaded flag. */ 00095 00096 TextureGL* getInterpolator() const; 00097 /*<! This method returns the interpolator texture. */ 00098 00099 void setInterpolator(TextureGL* interpolator); 00100 /*<! This method sets the interpolator texture (must be an 00101 alpha texture). */ 00102 00103 TexGenGL* getInterpolatorTexGen() const; 00104 /*<! This method returns the texture coordinate generator 00105 for the interpolator texture (can return NULL). */ 00106 00107 void setInterpolatorTexGen(TexGenGL* interpolatorTexGen); 00108 /*<! This method sets the texture coordinate generator 00109 for the interpolator texture; NULL can be used. */ 00110 00111 TextureGL* getTexture(unsigned int i) const; 00112 /*<! This method returns the i-th texture (0 <= i < 2). */ 00113 00114 void setTexture(unsigned int i, TextureGL* texture); 00115 /*<! This method sets the i-th texture (0 <= i < 2). */ 00116 00117 TexGenGL* getTexGen(unsigned int i) const; 00118 /*<! This method returns the i-th texture coordinate 00119 generator (0 <= i < 2); can return NULL. */ 00120 00121 void setTexGen(unsigned int i, TexGenGL* texGen); 00122 /*<! This method sets the i-th texture coordinate 00123 generator (0 <= i < 2); NULL can be used. */ 00124 00125 using TexturingEffectGL::setShaded; 00126 /*<! Allow the setting of the shaded flag 00127 (this method is protected in the base class). */ 00128 00129 virtual bool ignorePreviousEffects() const; 00130 /*<! This methods returns whether this effect can 00131 be merged with previous effects (if specified). */ 00132 00133 VRS_TYPEINFO(InterpolatedMultiTexturingEffectGL, TexturingEffectGL); 00134 VRS_SERIALIZABLE(InterpolatedMultiTexturingEffectGL); 00135 00136 protected: 00137 InterpolatedMultiTexturingEffectGL(); // only for serialization! 00138 00139 private: 00140 SO<TextureGL> interpolator_; 00141 SO<TexGenGL> interpolatorTexGen_; 00142 SO<TextureGL> textures_[2]; 00143 SO<TexGenGL> texGens_[2]; 00144 }; 00145 00146 } // namespace VRS 00147 00148 #endif // VRS_OPENGL_INTERPOLATEDMULTITEXTURINGEFFECTGL_H