Gizmo3D

gzTexture.h

Go to the documentation of this file.
00001 //*****************************************************************************
00002 // File         : gzTexture.h
00003 // Module       : 
00004 // Description  : Class definition of the gzTexture class
00005 // Author       : Anders Modén      
00006 // Product      : Gizmo3D 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden
00009 //          
00010 // NOTE:    Gizmo3D is a high performance 3D Scene Graph and effect visualisation 
00011 //          C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for  
00012 //          usage in Game or VisSim development.
00013 //
00014 //
00015 // Revision History...                          
00016 //                                  
00017 // Who  Date    Description                     
00018 //                                  
00019 // AMO  990210  Created file    
00020 // LJH  041029  Added comments
00021 //
00022 //******************************************************************************
00023 #ifndef __GZ_TEXTURE_H__
00024 #define __GZ_TEXTURE_H__
00025 
00031 #include "gzObject.h"
00032 #include "gzMatrix.h"
00033 #include "gzImage.h"
00034 
00036 enum gzTextureMagFilter
00037 {
00038     GZ_TEXTURE_MAG_NEAREST  =GZ_NEAREST,        
00039     GZ_TEXTURE_MAG_LINEAR   =GZ_LINEAR,         
00040 };
00041 
00043 enum gzTextureMinFilter
00044 {
00045     GZ_TEXTURE_MIN_NEAREST                  =GZ_NEAREST,                    
00046     GZ_TEXTURE_MIN_LINEAR                   =GZ_LINEAR,                     
00047     GZ_TEXTURE_MIN_NEAREST_MIPMAP_NEAREST   =GZ_NEAREST_MIPMAP_NEAREST,     
00048     GZ_TEXTURE_MIN_NEAREST_MIPMAP_LINEAR    =GZ_NEAREST_MIPMAP_LINEAR,      
00049     GZ_TEXTURE_MIN_LINEAR_MIPMAP_NEAREST    =GZ_LINEAR_MIPMAP_NEAREST,      
00050     GZ_TEXTURE_MIN_LINEAR_MIPMAP_LINEAR     =GZ_LINEAR_MIPMAP_LINEAR,       
00051 };
00052 
00054 
00058 enum gzTextureWrapMode
00059 {
00060     GZ_TEXTURE_WRAP_CLAMP           = GZ_CLAMP,             
00061     GZ_TEXTURE_WRAP_REPEAT          = GZ_REPEAT,            
00062     GZ_TEXTURE_WRAP_CLAMP_TO_EDGE   = GZ_CLAMP_TO_EDGE,     
00063     GZ_TEXTURE_WRAP_CLAMP_TO_BORDER = GZ_CLAMP_TO_BORDER,   
00064     GZ_TEXTURE_WRAP_MIRRORED_REPEAT = GZ_MIRRORED_REPEAT,   
00065 };
00066 
00067 class gzContext;
00068 
00069 //******************************************************************************
00070 // Class    : gzBindTextureInfo
00071 //                                  
00072 // Purpose  : Keep bind info about texture per context
00073 //                                  
00074 // Notes    : - 
00075 //                                  
00076 // Revision History...                          
00077 //                                  
00078 // Who  Date    Description                     
00079 //                                  
00080 // AMO  030422  Created 
00081 //                                  
00082 //******************************************************************************
00083 class gzBindTextureInfo
00084 {
00085 public:
00086 
00087     gzBindTextureInfo():bindID(0),contextEnumerator(0),isBind(FALSE){};
00088 
00089     gzRefPointer<gzRefIdStorage>    bindPool;
00090     gzUInt                          bindID;
00091     gzULong                         contextEnumerator;
00092     gzBool                          isBind;
00093 };
00094 
00096 enum gzGfxInternalTextureFormat
00097 {
00098     GZ_TEX_FORMAT_LUMINANCE                     =   GZ_LUMINANCE,           
00099     GZ_TEX_FORMAT_LUMINANCE_ALPHA               =   GZ_LUMINANCE_ALPHA,     
00100     GZ_TEX_FORMAT_RGB                           =   GZ_RGB,                 
00101     GZ_TEX_FORMAT_RGBA                          =   GZ_RGBA,                
00102     
00103     GZ_TEX_FORMAT_ALPHA                         =   GZ_ALPHA,                       
00104     GZ_TEX_FORMAT_ALPHA4                        =   GZ_ALPHA4,                      
00105     GZ_TEX_FORMAT_ALPHA8                        =   GZ_ALPHA8,                      
00106     GZ_TEX_FORMAT_ALPHA12                       =   GZ_ALPHA12,                     
00107     GZ_TEX_FORMAT_ALPHA16                       =   GZ_ALPHA16,                     
00108     GZ_TEX_FORMAT_COMPRESSED_ALPHA              =   GZ_COMPRESSED_ALPHA,            
00109     GZ_TEX_FORMAT_COMPRESSED_LUMINANCE          =   GZ_COMPRESSED_LUMINANCE,        
00110     GZ_TEX_FORMAT_COMPRESSED_LUMINANCE_ALPHA    =   GZ_COMPRESSED_LUMINANCE_ALPHA,  
00111     GZ_TEX_FORMAT_COMPRESSED_INTENSITY          =   GZ_COMPRESSED_INTENSITY,        
00112     GZ_TEX_FORMAT_COMPRESSED_RGB                =   GZ_COMPRESSED_RGB,              
00113     GZ_TEX_FORMAT_COMPRESSED_RGBA               =   GZ_COMPRESSED_RGBA,             
00114     GZ_TEX_FORMAT_DEPTH_COMPONENT               =   GZ_DEPTH_COMPONENT,             
00115 };
00116 
00117 //******************************************************************************
00118 // Class    : gzTexture
00119 //                                  
00120 // Purpose  : -
00121 //                                  
00122 // Notes    : - 
00123 //                                  
00124 // Revision History...                          
00125 //                                  
00126 // Who  Date    Description                     
00127 //                                  
00128 // AMO  990210  Created 
00129 //                                  
00130 //******************************************************************************
00131 class gzTexture : public gzObject
00132 {
00133 public:
00134     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00135 
00137     GZ_GRAPH_EXPORT gzTexture();
00138 
00140     GZ_GRAPH_EXPORT gzTexture( const gzTexture &copy);
00141 
00143     GZ_GRAPH_EXPORT virtual ~gzTexture();
00144 
00145     GZ_GRAPH_EXPORT gzVoid  virtual activate(gzContext *context);
00146     GZ_GRAPH_EXPORT static gzVoid deactivate(gzContext *context);
00147 
00148 
00150 
00153     GZ_GRAPH_EXPORT gzImage *           setImage(gzImage *image);
00154 
00156     GZ_GRAPH_EXPORT gzImage *           getImage();
00157 
00158 
00160     GZ_GRAPH_EXPORT gzVoid              setComponents(gzUByte count);
00161 
00162 
00164     GZ_GRAPH_EXPORT gzVoid              setInternalFormat(gzGfxInternalTextureFormat format);
00165     
00166 
00168 
00172     GZ_GRAPH_EXPORT gzVoid              setWrapS(gzTextureWrapMode wrap);
00173 
00175     GZ_GRAPH_EXPORT gzTextureWrapMode   getWrapS();
00176 
00177 
00179 
00183     GZ_GRAPH_EXPORT gzVoid              setWrapT(gzTextureWrapMode wrap);
00184 
00186     GZ_GRAPH_EXPORT gzTextureWrapMode   getWrapT();
00187     
00188 
00190 
00194     GZ_GRAPH_EXPORT gzVoid              setMagFilter(gzTextureMagFilter filter);
00195 
00197 
00201     GZ_GRAPH_EXPORT gzVoid              setMinFilter(gzTextureMinFilter filter);
00202 
00203 
00205     GZ_GRAPH_EXPORT gzVoid      setBorder(gzFloat red , gzFloat green , gzFloat blue , gzFloat alpha); 
00206 
00207 
00209     GZ_GRAPH_EXPORT gzVoid      setBorderWidth(gzUShort width);
00210 
00212     GZ_GRAPH_EXPORT gzUShort    getBorderWidth();
00213 
00214 
00216 
00219     GZ_GRAPH_EXPORT gzVoid      useMipMaps(gzBool on);
00220 
00222     GZ_GRAPH_EXPORT gzVoid      setMipMaps(const gzRefList<gzImage> &imageList);
00223 
00225     GZ_GRAPH_EXPORT gzRefList<gzImage> getMipMaps();
00226 
00227 
00228     GZ_GRAPH_EXPORT gzVoid      setBind(gzBool bind);
00229     GZ_GRAPH_EXPORT gzVoid      reBind();
00230 
00231     GZ_GRAPH_EXPORT gzVoid      disposeImage(gzBool on=FALSE);
00232     GZ_GRAPH_EXPORT gzVoid      compressImageOnGPU(gzBool on=FALSE);
00233 
00235     GZ_GRAPH_EXPORT gzVoid      createMipMaps(gzBool rebind=TRUE);
00236 
00237 
00238     // ---------- Clone interface ---------------------------------------
00240     GZ_GRAPH_EXPORT virtual gzReference* clone() const;
00241 
00243     GZ_GRAPH_EXPORT virtual gzBool  useDeepCopy();
00244 
00245     // ---------- operators --------------------------------------------
00247 
00251     GZ_GRAPH_EXPORT gzBool operator==(const gzTexture &right) const;
00252 
00254 
00258     GZ_GRAPH_EXPORT gzBool operator!=(const gzTexture &right) const { return !operator==(right); }
00259 
00260 
00261 private:
00262 
00263     gzVoid      transferImage(gzContext *context,gzBool forceImageUpload);
00264     gzVoid      transferImage(gzImage *image,gzULong level,gzBool fullUpload,gzContext *mainContext);
00265     gzVoid      checkImagePowerSize();
00266     
00267 
00268     gzDynamicArray<gzBindTextureInfo>   m_bindInfo;
00269     
00270     gzRefList<gzImage>                  m_mipMaps;
00271     gzRefPointer<gzImage>               m_image;
00272 
00273     gzEnum                              m_wrap_s;
00274     gzEnum                              m_wrap_t;
00275     gzEnum                              m_mag_filter;
00276     gzEnum                              m_min_filter;
00277 
00278     gzULong                             m_texDataSize;
00279     
00280     gzLookupUpdateID                    m_updateID;
00281 
00282     gzLateBindData<gzRGBA>              m_border_color;
00283 
00284     gzUShort                            m_borderWidth;
00285 
00286     gzGfxInternalTextureFormat          m_internalFormat;
00287 
00288     gzBool                              m_useMipMap:1;
00289     gzBool                              m_bind:1;
00290     gzBool                              m_disposeImage:1;
00291     gzBool                              m_compressOnGPU:1;
00292 };
00293 
00294 // Declare smart pointer type
00295 GZ_DECLARE_REFPTR(gzTexture);
00296 
00297 
00298 #endif

Documentation for Gizmo3D generated at Wed Feb 20 11:54:11 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond