Irrlicht 3D Engine
ITexture.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_TEXTURE_H_INCLUDED__
6 #define __I_TEXTURE_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "IImage.h"
10 #include "dimension2d.h"
11 #include "EDriverTypes.h"
12 #include "path.h"
13 #include "matrix4.h"
14 
15 namespace irr
16 {
17 namespace video
18 {
19 
20 
23 {
32  ETCF_ALWAYS_16_BIT = 0x00000001,
33 
41  ETCF_ALWAYS_32_BIT = 0x00000002,
42 
50 
57 
59  ETCF_CREATE_MIP_MAPS = 0x00000010,
60 
62  ETCF_NO_ALPHA_CHANNEL = 0x00000020,
63 
65 
66  ETCF_ALLOW_NON_POWER_2 = 0x00000040,
67 
71 };
72 
75 {
78 
80 
82 
84 
87 };
88 
90 
98 class ITexture : public virtual IReferenceCounted
99 {
100 public:
101 
103  ITexture(const io::path& name) : NamedPath(name)
104  {
105  }
106 
108 
127  virtual void* lock(E_TEXTURE_LOCK_MODE mode=ETLM_READ_WRITE, u32 mipmapLevel=0) = 0;
128 
130 
132  virtual void unlock() = 0;
133 
135 
142  virtual const core::dimension2d<u32>& getOriginalSize() const = 0;
143 
145 
146  virtual const core::dimension2d<u32>& getSize() const = 0;
147 
149 
153  virtual E_DRIVER_TYPE getDriverType() const = 0;
154 
156 
157  virtual ECOLOR_FORMAT getColorFormat() const = 0;
158 
160 
163  virtual u32 getPitch() const = 0;
164 
166 
167  virtual bool hasMipMaps() const { return false; }
168 
170  virtual bool hasAlpha() const {
172  }
173 
175 
181  virtual void regenerateMipMapLevels(void* mipmapData=0) = 0;
182 
184 
188  virtual bool isRenderTarget() const { return false; }
189 
191  const io::SNamedPath& getName() const { return NamedPath; }
192 
193 protected:
194 
196 
199  {
200  if (flags & ETCF_OPTIMIZED_FOR_SPEED)
202  if (flags & ETCF_ALWAYS_16_BIT)
203  return ETCF_ALWAYS_16_BIT;
204  if (flags & ETCF_ALWAYS_32_BIT)
205  return ETCF_ALWAYS_32_BIT;
206  if (flags & ETCF_OPTIMIZED_FOR_QUALITY)
209  }
210 
212 };
213 
214 
215 } // end namespace video
216 } // end namespace irr
217 
218 #endif
219 
irr::video::ITexture::getSize
virtual const core::dimension2d< u32 > & getSize() const =0
Get dimension (=size) of the texture.
irr::video::ITexture::getPitch
virtual u32 getPitch() const =0
Get pitch of the main texture (in bytes).
irr::video::ITexture::lock
virtual void * lock(E_TEXTURE_LOCK_MODE mode=ETLM_READ_WRITE, u32 mipmapLevel=0)=0
Lock function.
path.h
irr::video::ETCF_CREATE_MIP_MAPS
@ ETCF_CREATE_MIP_MAPS
Definition: ITexture.h:59
irr::video::ETCF_ALWAYS_16_BIT
@ ETCF_ALWAYS_16_BIT
Definition: ITexture.h:32
IReferenceCounted.h
irr::video::ITexture::getTextureFormatFromFlags
E_TEXTURE_CREATION_FLAG getTextureFormatFromFlags(u32 flags)
Helper function, helps to get the desired texture creation format from the flags.
Definition: ITexture.h:198
matrix4.h
irr::video::E_TEXTURE_CREATION_FLAG
E_TEXTURE_CREATION_FLAG
Enumeration flags telling the video driver in which format textures should be created.
Definition: ITexture.h:22
irr::video::ITexture
Interface of a Video Driver dependent Texture.
Definition: ITexture.h:98
irr::video::ITexture::getOriginalSize
virtual const core::dimension2d< u32 > & getOriginalSize() const =0
Get original size of the texture.
irr::video::ETLM_WRITE_ONLY
@ ETLM_WRITE_ONLY
Write only. The texture is not downloaded and might be uninitialised.
Definition: ITexture.h:86
irr::video::ITexture::regenerateMipMapLevels
virtual void regenerateMipMapLevels(void *mipmapData=0)=0
Regenerates the mip map levels of the texture.
irr::video::ITexture::isRenderTarget
virtual bool isRenderTarget() const
Check whether the texture is a render target.
Definition: ITexture.h:188
irr::video::ITexture::hasAlpha
virtual bool hasAlpha() const
Returns if the texture has an alpha channel.
Definition: ITexture.h:170
irr::video::ETLM_READ_ONLY
@ ETLM_READ_ONLY
Read only. The texture is downloaded, but not uploaded again.
Definition: ITexture.h:81
irr::IReferenceCounted
Base class of most objects of the Irrlicht Engine.
Definition: IReferenceCounted.h:41
irr::core::dimension2d< u32 >
irr::video::ETCF_FORCE_32_BIT_DO_NOT_USE
@ ETCF_FORCE_32_BIT_DO_NOT_USE
Definition: ITexture.h:70
irr::video::ITexture::getColorFormat
virtual ECOLOR_FORMAT getColorFormat() const =0
Get the color format of texture.
irr::io::SNamedPath
Used in places where we identify objects by a filename, but don't actually work with the real filenam...
Definition: path.h:23
irr::video::ITexture::ITexture
ITexture(const io::path &name)
constructor
Definition: ITexture.h:103
irr::video::ETCF_OPTIMIZED_FOR_QUALITY
@ ETCF_OPTIMIZED_FOR_QUALITY
Definition: ITexture.h:49
irr::video::ECF_A8R8G8B8
@ ECF_A8R8G8B8
Default 32 bit color format. 8 bits are used for every component: red, green, blue and alpha.
Definition: SColor.h:32
irr::video::E_TEXTURE_LOCK_MODE
E_TEXTURE_LOCK_MODE
Enum for the mode for texture locking. Read-Only, write-only or read/write.
Definition: ITexture.h:74
irr::video::ETCF_OPTIMIZED_FOR_SPEED
@ ETCF_OPTIMIZED_FOR_SPEED
Definition: ITexture.h:56
irr::video::ETCF_ALLOW_NON_POWER_2
@ ETCF_ALLOW_NON_POWER_2
Allow the Driver to use Non-Power-2-Textures.
Definition: ITexture.h:66
irr::video::ETLM_READ_WRITE
@ ETLM_READ_WRITE
The default mode. Texture can be read and written to.
Definition: ITexture.h:77
IImage.h
irr::core::string< fschar_t >
irr::video::ITexture::getDriverType
virtual E_DRIVER_TYPE getDriverType() const =0
Get driver type of texture.
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::video::ETCF_NO_ALPHA_CHANNEL
@ ETCF_NO_ALPHA_CHANNEL
Definition: ITexture.h:62
irr::u32
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
irr::video::ETCF_ALWAYS_32_BIT
@ ETCF_ALWAYS_32_BIT
Definition: ITexture.h:41
irr::video::ITexture::hasMipMaps
virtual bool hasMipMaps() const
Check whether the texture has MipMaps.
Definition: ITexture.h:167
irr::video::E_DRIVER_TYPE
E_DRIVER_TYPE
An enum for all types of drivers the Irrlicht Engine supports.
Definition: EDriverTypes.h:14
irr::video::ITexture::getName
const io::SNamedPath & getName() const
Get name of texture (in most cases this is the filename)
Definition: ITexture.h:191
irr::video::ITexture::NamedPath
io::SNamedPath NamedPath
Definition: ITexture.h:211
dimension2d.h
irr::video::ITexture::unlock
virtual void unlock()=0
Unlock function. Must be called after a lock() to the texture.
irr::video::ECOLOR_FORMAT
ECOLOR_FORMAT
An enum for the color format of textures used by the Irrlicht Engine.
Definition: SColor.h:17
irr::video::ECF_A1R5G5B5
@ ECF_A1R5G5B5
16 bit color format used by the software driver.
Definition: SColor.h:23
EDriverTypes.h