| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /********************************************************************** 00002 VRS - The Virtual Rendering System 00003 Copyright (C) 2001 Computer Graphics Systems Group at the 00004 Hasso-Plattner-Institute, Potsdam, Germany. 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 This library is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 See the GNU Lesser General Public License for more details. 00013 You should have received a copy of the GNU Lesser+ General Public 00014 License along with this library; if not, write to the FreeSoftware 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA. 00016 **********************************************************************/ 00017 // $Id: texenvgl.h 6014 2007-08-09 07:51:16Z Konstantin_Baumann $ 00018 // $Date: 2007-08-09 09:51:16 +0200 (Thu, 09 Aug 2007) $ 00019 // $Revision: 6014 $ 00020 // $State$ 00021 // $Author: Konstantin_Baumann $ 00022 // 00023 // $Log$ 00024 // Revision 1.16 2005/06/15 16:30:02 baumann 00025 // added methods SharedObj::isEqual() and SharedObj::IsEqual() (define operator==() in derived classes for a real implementaton) 00026 // 00027 // Revision 1.15 2005/01/03 01:43:10 klimetschek 00028 // - modified win32 project layout, splitted vrs.vcproj into vrs_container, vrs_core, vrs_sg, vrs_image, vrs_opengl and vrs_io 00029 // - removed vrs.vcproj 00030 // minor things: 00031 // - added all glutexamples to vrs4glut.sln 00032 // - fixed some problems in glutexamples 00033 // - removed all project references from all VS projects (using solution wide project dependencies instead) 00034 // 00035 // Revision 1.14 2004/11/03 14:45:07 saar 00036 // Class comment changed (Doxygen style) 00037 // 00038 // Revision 1.13 2004/03/12 16:28:41 baumann 00039 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00040 // 00041 // Revision 1.12 2004/01/19 11:43:58 baumann 00042 // serialization mechanism improved 00043 // 00044 // Revision 1.11 2004/01/19 07:28:03 baumann 00045 // serialization mechanism improved 00046 // 00047 // Revision 1.10 2003/07/23 17:04:49 baumann 00048 // code cleanup (especially untabified) 00049 // 00050 // Revision 1.9 2002/10/14 11:46:06 baumann 00051 // corrected default value for LOD bias to 0.0 00052 // 00053 // Revision 1.8 2002/09/28 09:13:37 baumann 00054 // - new class added: TexEnvCombineGL 00055 // - some functionality of class TexEnvGL moved to new class TexEnvCombineGL 00056 // 00057 // Revision 1.7 2002/09/02 11:19:26 kirsch 00058 // added SubtractWithBiasOneHalf mode 00059 // 00060 // Revision 1.6 2002/08/30 07:40:06 baumann 00061 // code cleanup 00062 // 00063 // Revision 1.5 2002/03/04 12:00:20 kersting 00064 // directory structure changes 00065 // 00066 // Revision 1.10 2002/03/03 21:44:26 kosta 00067 // VRS_TYPEINFO-macro rewritten 00068 // 00069 // Revision 1.9 2002/02/19 10:34:19 kosta 00070 // undone all changes since 2002-02-15 00071 // 00072 // Revision 1.6 2002/02/05 07:48:26 kosta 00073 // new persistency macros: 00074 // VRS_SERIALIZABLE(CLASS_NAME); 00075 // VRS_SERIALIZABLE_ABSTRACT_CLASS(CLASS_NAME); 00076 // VRS_SERIALIZABLE_NO_SO_CLASS(CLASS_NAME) 00077 // 00078 // Revision 1.5 2002/02/04 13:07:19 kosta 00079 // VRS_SERIALIZABLE macros completely rewritten 00080 // 00081 // Revision 1.4 2002/01/15 16:25:55 kosta 00082 // macros rewritten for a better namespace support 00083 // 00084 // Revision 1.3 2002/01/10 09:20:27 nienhaus 00085 // add 'Subtract' and 'Interpolate' texture function 00086 // 00087 // Revision 1.2 2002/01/09 16:18:59 kirsch 00088 // added modified() in setLODBias() 00089 // 00090 // Revision 1.1 2002/01/08 16:02:49 kosta 00091 // dir structure for textures changed 00092 // 00093 // Revision 1.3 2001/11/23 16:15:37 kirsch 00094 // GCC fixes 00095 // 00096 // Revision 1.2 2001/11/21 11:37:54 nienhaus 00097 // OpenGL texture environment attribute to support additional combine facilities offerd by OpenGL 1.3 and Extensions 00098 // 00099 // 00100 00101 #ifndef VRS_OPENGL_TEXTURE_TEXENVGL_H 00102 #define VRS_OPENGL_TEXTURE_TEXENVGL_H 00103 00104 #include <vrs/monoattribute.h> 00105 #include <vrs/color.h> 00106 00107 namespace VRS {; 00108 00110 class VRS_CORE_API TexEnvGL : public MonoAttribute { 00111 public: 00112 enum CombineMode { Modulate = 0, Blend, Decal, Replace, Add, Custom }; 00113 VRS_SERIALIZABLE_CLASS_ENUM(CombineMode); 00117 TexEnvGL(CombineMode combine = TexEnvGL::Modulate, 00118 const Color& textureEnvColor = Color::black, 00119 double lodBias = 0.0); 00121 00122 bool operator==(const TexEnvGL& other) const; 00123 00124 CombineMode getCombineMode() const; 00125 void setCombineMode(CombineMode func); 00127 00128 const Color& getEnvironmentColor() const; 00129 void setEnvironmentColor(const Color& color); 00131 00132 void setLODBias(double bias = 0.0); 00133 double getLODBias() const; 00134 00135 virtual ID category() const; 00136 00137 VRS_TYPEINFO(TexEnvGL, MonoAttribute); 00138 VRS_SERIALIZABLE(TexEnvGL); 00139 00140 private: 00141 CombineMode env_; 00142 Color envColor_; 00143 double lodBias_; 00144 }; 00145 00146 inline TexEnvGL::CombineMode TexEnvGL::getCombineMode() const { 00147 return env_; 00148 } 00149 00150 inline const Color& TexEnvGL::getEnvironmentColor() const { 00151 return envColor_; 00152 } 00153 00154 inline double TexEnvGL::getLODBias() const { 00155 return lodBias_; 00156 } 00157 00158 } // namespace VRS 00159 00160 #endif // VRS_OPENGL_TEXTURE_TEXENVGL_H