31 #include "common/array.h" 32 #include "graphics/pixelformat.h" 33 #include "hpl1/engine/graphics/GraphicsTypes.h" 34 #include "hpl1/engine/graphics/LowLevelPicture.h" 35 #include "hpl1/engine/graphics/bitmap2D.h" 36 #include "hpl1/engine/resources/ResourceBase.h" 42 eTextureType_RenderTarget,
52 eTextureTarget_CubeMap,
54 eTextureTarget_LastEnum
62 eTextureWrap_ClampToEdge,
63 eTextureWrap_ClampToBorder,
70 eTextureFilter_Bilinear,
71 eTextureFilter_Trilinear,
72 eTextureFilter_LastEnum
77 enum eTextureAnimMode {
78 eTextureAnimMode_None,
79 eTextureAnimMode_Loop,
80 eTextureAnimMode_Oscillate,
81 eTextureAnimMode_LastEnum
86 class iLowLevelGraphics;
91 eTextureType aType,
bool abUseMipMaps, eTextureTarget aTarget,
92 bool abCompress =
false)
94 mType(aType), mbUseMipMaps(abUseMipMaps),
95 mpLowLevelGraphics(apLowLevelGraphics), mbCompress(abCompress),
97 mWrapS(eTextureWrap_Repeat), mWrapT(eTextureWrap_Repeat), mWrapR(eTextureWrap_Repeat),
98 mfFrameTime(1), mAnimMode(eTextureAnimMode_Loop), mlSizeLevel(0), mvMinLevelSize(16, 16),
99 mfAnisotropyDegree(1.0f), mFilter(eTextureFilter_Bilinear), _bpp(apPxlFmt->
bpp()) {}
103 void SetSizeLevel(
unsigned int alLevel) { mlSizeLevel = alLevel; }
104 void SetMinLevelSize(
const cVector2l &avSize) { mvMinLevelSize = avSize; }
130 virtual bool Create(
unsigned int alWidth,
unsigned int alHeight,
cColor aCol) = 0;
132 virtual bool CreateAnimFromBitmapVec(
tBitmap2DVec *avBitmaps) = 0;
134 virtual bool CreateFromArray(
unsigned char *apPixelData,
int alChannels,
const cVector3l &avSize) = 0;
136 virtual void Update(
float afTimeStep) = 0;
138 virtual void SetFilter(eTextureFilter aFilter) = 0;
139 virtual void SetAnisotropyDegree(
float afX) = 0;
140 eTextureFilter GetFilter() {
return mFilter; }
141 float GetAnisotropyDegree(
float afX) {
return mfAnisotropyDegree; }
143 virtual float GetGamma() = 0;
144 virtual void SetGamma(
float afGamma) = 0;
145 virtual int GetHandle() = 0;
147 virtual bool hasAlpha()
override {
return false; }
148 uint32 getBpp()
const override {
return _bpp; }
150 virtual void SetWrapS(eTextureWrap aMode) = 0;
151 virtual void SetWrapT(eTextureWrap aMode) = 0;
152 virtual void SetWrapR(eTextureWrap aMode) = 0;
154 eTextureWrap GetWrapS() {
return mWrapS; }
155 eTextureWrap GetWrapT() {
return mWrapT; }
156 eTextureWrap GetWrapR() {
return mWrapR; }
158 void SetFrameTime(
float afX) { mfFrameTime = afX; }
159 float GetFrameTime() {
return mfFrameTime; }
161 eTextureAnimMode GetAnimMode() {
return mAnimMode; }
162 void SetAnimMode(eTextureAnimMode aMode) { mAnimMode = aMode; };
164 eTextureType GetTextureType() {
return mType; }
165 bool UsesMipMaps() {
return mbUseMipMaps; }
166 void SetMipMapUse(
bool abX) { mbUseMipMaps = abX; }
167 eTextureTarget GetTarget() {
return mTarget; }
169 virtual bool HasAnimation() = 0;
170 virtual void NextFrame() = 0;
171 virtual void PrevFrame() = 0;
172 virtual float GetT() = 0;
173 virtual float GetTimeCount() = 0;
174 virtual void SetTimeCount(
float afX) = 0;
175 virtual int GetCurrentLowlevelHandle() = 0;
179 eTextureTarget mTarget;
183 eTextureFilter mFilter;
184 float mfAnisotropyDegree;
190 eTextureAnimMode mAnimMode;
191 unsigned int mlSizeLevel;
201 #endif // HPL_TEXTURE_H
virtual bool Create(unsigned int alWidth, unsigned int alHeight, cColor aCol)=0
Definition: ResourceBase.h:36
Definition: LowLevelPicture.h:37
Definition: bitmap2D.h:42
iTexture * * iterator
Definition: array.h:54
bool reload() override
Definition: Texture.h:106
void destroy() override
Definition: Texture.h:108
void unload() override
Definition: Texture.h:107
virtual bool CreateFromBitmap(Bitmap2D *pBmp)=0
virtual bool CreateCubeFromBitmapVec(tBitmap2DVec *avBitmaps)=0
Definition: LowLevelGraphics.h:200