00001 #ifndef TEXTURE_H 00002 #define TEXTURE_H 00003 00004 #include "Image.h" 00005 #include "TexCoordinate.h" 00006 #include "RGBAColor.h" 00007 00009 enum Mode{ 00011 WRAP = 0, 00012 00014 REPEAT = 1 00015 }; 00016 00018 enum InterpolationMode 00019 { 00021 NEAREST = 0, 00022 00024 LINEAR = 1 00025 }; 00026 00027 00032 class Texture 00033 { 00034 public: 00037 Texture() 00038 : mMode(WRAP), 00039 mInterpolationMode(NEAREST) 00040 { 00041 } 00042 00045 virtual ~Texture() 00046 { 00047 } 00048 00051 Mode wrapMode() const 00052 { 00053 return mMode; 00054 } 00055 00058 void setWrapMode(Mode mode) 00059 { 00060 mMode = mode; 00061 } 00062 00065 InterpolationMode interpolationMode() const 00066 { 00067 return mInterpolationMode; 00068 } 00069 00072 void setInterpolationMode(InterpolationMode mode) 00073 { 00074 mInterpolationMode = mode; 00075 } 00076 00080 virtual RGBAColor texel(float u, float v) const = 0; 00081 inline RGBAColor texel(const TexCoordinate & uv) const 00082 { 00083 return texel(uv.x(), uv.y()); 00084 } 00085 00088 virtual int resX() const = 0; 00089 00092 virtual int resY() const = 0; 00093 00094 protected: 00096 Mode mMode; 00097 00099 InterpolationMode mInterpolationMode; 00100 }; 00101 00102 #endif