Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

# ITexture.h

Go to the documentation of this file.

    00001 // Copyright (C) 2002-2009 Nikolaus Gebhardt
    00002 // This file is part of the "Irrlicht Engine".
    00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
    00004
    00005 #ifndef __I_TEXTURE_H_INCLUDED__
    00006 #define __I_TEXTURE_H_INCLUDED__
    00007
    00008 #include "IReferenceCounted.h"
    00009 #include "IImage.h"
    00010 #include "dimension2d.h"
    00011 #include "EDriverTypes.h"
    00012 #include "path.h"
    00013 #include "matrix4.h"
    00014
    00015 namespace irr
    00016 {
    00017 namespace video
    00018 {
    00019
    00020
    00022 enum E_TEXTURE_CREATION_FLAG
    00023 {
    00032         ETCF_ALWAYS_16_BIT = 0x00000001,
    00033
    00041         ETCF_ALWAYS_32_BIT = 0x00000002,
    00042
    00049         ETCF_OPTIMIZED_FOR_QUALITY = 0x00000004,
    00050
    00056         ETCF_OPTIMIZED_FOR_SPEED = 0x00000008,
    00057
    00059         ETCF_CREATE_MIP_MAPS = 0x00000010,
    00060
    00062         ETCF_NO_ALPHA_CHANNEL = 0x00000020,
    00063
    00065
    00066         ETCF_ALLOW_NON_POWER_2 = 0x00000040,
    00067
    00070         ETCF_FORCE_32_BIT_DO_NOT_USE = 0x7fffffff
    00071 };
    00072
    00073
    00075
    00083 class ITexture : public virtual IReferenceCounted
    00084 {
    00085 public:
    00086
    00088         ITexture(const io::path& name) : NamedPath(name)
    00089         {
    00090         }
    00091
    00093
    00105         virtual void* lock(bool readOnly = false, u32 mipmapLevel=0) = 0;
    00106
    00108
    00109         virtual void unlock() = 0;
    00110
    00112
    00119         virtual const core::dimension2d<u32>& getOriginalSize() const = 0;
    00120
    00122
    00123         virtual const core::dimension2d<u32>& getSize() const = 0;
    00124
    00126
    00130         virtual E_DRIVER_TYPE getDriverType() const = 0;
    00131
    00133
    00134         virtual ECOLOR_FORMAT getColorFormat() const = 0;
    00135
    00137
    00140         virtual u32 getPitch() const = 0;
    00141
    00143
    00144         virtual bool hasMipMaps() const { return false; }
    00145
    00147         virtual bool hasAlpha() const {
    00148                 return getColorFormat () == video::ECF_A8R8G8B8 || getColorFormat () == video::ECF_A1R5G5B5;
    00149         }
    00150
    00152
    00153         virtual void regenerateMipMapLevels(void* mipmapData=0) = 0;
    00154
    00156
    00157         virtual bool isRenderTarget() const { return false; }
    00158
    00160         const io::SNamedPath& getName() const { return NamedPath; }
    00161
    00162 protected:
    00163
    00165
    00167         inline E_TEXTURE_CREATION_FLAG getTextureFormatFromFlags(u32 flags)
    00168         {
    00169                 if (flags & ETCF_OPTIMIZED_FOR_SPEED)
    00170                         return ETCF_OPTIMIZED_FOR_SPEED;
    00171                 if (flags & ETCF_ALWAYS_16_BIT)
    00172                         return ETCF_ALWAYS_16_BIT;
    00173                 if (flags & ETCF_ALWAYS_32_BIT)
    00174                         return ETCF_ALWAYS_32_BIT;
    00175                 if (flags & ETCF_OPTIMIZED_FOR_QUALITY)
    00176                         return ETCF_OPTIMIZED_FOR_QUALITY;
    00177                 return ETCF_OPTIMIZED_FOR_SPEED;
    00178         }
    00179
    00180         io::SNamedPath NamedPath;
    00181 };
    00182
    00183
    00184 } // end namespace video
    00185 } // end namespace irr
    00186
    00187 #endif
    00188

| The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Feb 14 13:06:57 2010 by Doxygen (1.6.2)