Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_OPENGL_TEXTUREBASE_H__
00009 #define __SP_OPENGL_TEXTUREBASE_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #if defined(SP_COMPILE_WITH_OPENGL) || defined(SP_COMPILE_WITH_OPENGLES1) || defined(SP_COMPILE_WITH_OPENGLES2)
00015
00016
00017 #include "RenderSystem/spTextureBase.hpp"
00018 #include "RenderSystem/OpenGL/spOpenGLCoreHeader.hpp"
00019
00020
00021 namespace sp
00022 {
00023 namespace video
00024 {
00025
00026
00027 class SP_EXPORT GLTextureBase : public Texture
00028 {
00029
00030 public:
00031
00032 virtual ~GLTextureBase();
00033
00034
00035
00036 bool valid() const;
00037
00038 void setFilter(const ETextureFilters Filter);
00039 void setFilter(const ETextureFilters MagFilter, const ETextureFilters MinFilter);
00040 void setMagFilter(const ETextureFilters Filter);
00041 void setMinFilter(const ETextureFilters Filter);
00042
00043 void setMipMapFilter(const ETextureMipMapFilters MipMapFilter);
00044
00045 void setWrapMode(const ETextureWrapModes Wrap);
00046 void setWrapMode(
00047 const ETextureWrapModes WrapU, const ETextureWrapModes WrapV, const ETextureWrapModes WrapW = TEXWRAP_REPEAT
00048 );
00049
00050 void generateMipMap();
00051
00052 void bind(s32 Level = 0) const;
00053 void unbind(s32 Level = 0) const;
00054
00055 protected:
00056
00057 friend class GLProgrammableFunctionPipeline;
00058 friend class GLFramebufferObject;
00059
00060
00061
00062 GLTextureBase();
00063 GLTextureBase(const STextureCreationFlags &CreationFlags);
00064
00065 void createHWTexture();
00066 void deleteHWTexture();
00067
00069 void updateTextureAttributesImmediate();
00070
00071 virtual void updateTextureAttributes();
00072 virtual void updateTextureImage();
00073
00074 virtual void updateHardwareFormats() = 0;
00075 virtual void updateHardwareTexture(
00076 dim::vector3di Size, const u32 PixelSize, const void* ImageBuffer, s32 Level = 0
00077 ) = 0;
00078
00079
00080
00081 inline GLuint getTexID() const
00082 {
00083 return *static_cast<GLuint*>(OrigID_);
00084 }
00085 inline GLuint* getTexPtrID() const
00086 {
00087 return static_cast<GLuint*>(OrigID_);
00088 }
00089
00090
00091
00092 GLenum GLFormat_, GLInternalFormat_, GLDimension_, GLType_;
00093
00094 };
00095
00096
00097 }
00098
00099 }
00100
00101
00102 #endif
00103
00104 #endif
00105
00106
00107
00108