00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022
00023
#ifndef __M3DCORE_TEXTURE_H__
00024
#define __M3DCORE_TEXTURE_H__
00025
00026
#include "../m3dbase.h"
00027
#include "../m3dtypes.h"
00028
00029
#include "m3dcore_basetexture.h"
00030
00032 class CMuli3DTexture :
public IMuli3DBaseTexture
00033 {
00034
protected:
00035
~CMuli3DTexture();
00036
00037
friend class CMuli3DDevice;
00040
CMuli3DTexture(
class CMuli3DDevice *i_pParent );
00041
00051
result Create(
uint32 i_iWidth,
uint32 i_iHeight,
uint32 i_iMipLevels,
00052
m3dformat i_fmtFormat );
00053
00054
m3dtexsampleinput eGetTexSampleInput();
00055
00056
friend class CMuli3DCubeTexture;
00067
result SampleTexture( vector4 &o_vColor,
float32 i_fU,
float32 i_fV,
00068
float32 i_fW,
const vector4 *i_pXGradient,
const vector4 *i_pYGradient,
00069
const uint32 *i_pSamplerStates );
00070
00071
public:
00076
result GenerateMipSubLevels(
uint32 i_iSrcLevel );
00077
00084
result Clear(
uint32 i_iMipLevel,
const vector4 &i_vColor,
const m3drect *i_pRect );
00085
00095
result LockRect(
uint32 i_iMipLevel,
void **o_ppData,
const m3drect *i_pRect );
00096
00101
result UnlockRect(
uint32 i_iMipLevel );
00102
00106
class CMuli3DSurface *
pGetMipLevel(
uint32 i_iMipLevel );
00107
00108
m3dformat fmtGetFormat();
00109
uint32 iGetFormatFloats();
00110
uint32 iGetMipLevels();
00111
00114
uint32 iGetWidth(
uint32 i_iMipLevel = 0 );
00115
00118
uint32 iGetHeight(
uint32 i_iMipLevel = 0 );
00119
00120
private:
00121
uint32 m_iMipLevels;
00122
float32 m_fSquaredWidth, m_fSquaredHeight;
00123
class CMuli3DSurface **m_ppMipLevels;
00124 };
00125
00126
#endif // __M3DCORE_TEXTURE_H__