00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022
00023
#ifndef __M3DCORE_VOLUMETEXTURE_H__
00024
#define __M3DCORE_VOLUMETEXTURE_H__
00025
00026
#include "../m3dbase.h"
00027
#include "../m3dtypes.h"
00028
00029
#include "m3dcore_basetexture.h"
00030
00032 class CMuli3DVolumeTexture :
public IMuli3DBaseTexture
00033 {
00034
protected:
00035
~CMuli3DVolumeTexture();
00036
00037
friend class CMuli3DDevice;
00040
CMuli3DVolumeTexture(
class CMuli3DDevice *i_pParent );
00041
00052
result Create(
uint32 i_iWidth,
uint32 i_iHeight,
uint32 i_iDepth,
00053
uint32 i_iMipLevels,
m3dformat i_fmtFormat );
00054
00055
m3dtexsampleinput eGetTexSampleInput();
00056
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 m3dbox *i_pBox );
00085
00095
result LockBox(
uint32 i_iMipLevel,
void **o_ppData,
const m3dbox *i_pBox );
00096
00101
result UnlockBox(
uint32 i_iMipLevel );
00102
00106
class CMuli3DVolume *
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
00122
uint32 iGetDepth(
uint32 i_iMipLevel = 0 );
00123
00124
private:
00125
uint32 m_iMipLevels;
00126
float32 m_fSquaredWidth, m_fSquaredHeight, m_fSquaredDepth;
00127
class CMuli3DVolume **m_ppMipLevels;
00128 };
00129
00130
#endif // __M3DCORE_VOLUMETEXTURE_H__