X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexturecube.h;h=0882a5e31004c3cef3e129b65ff24a2671e88fc0;hp=0d23884f1458626b954f2a6badd871d38ff9026f;hb=HEAD;hpb=2157e9320c60d561208dfdf6034e9a06781c9f30 diff --git a/source/texturecube.h b/source/texturecube.h deleted file mode 100644 index 0d23884f..00000000 --- a/source/texturecube.h +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef MSP_GL_TEXTURECUBE_H_ -#define MSP_GL_TEXTURECUBE_H_ - -#include "datatype.h" -#include "pixelformat.h" -#include "texture.h" -#include "vector.h" - -namespace Msp { -namespace GL { - -enum TextureCubeFace -{ - POSITIVE_X = GL_TEXTURE_CUBE_MAP_POSITIVE_X, - NEGATIVE_X = GL_TEXTURE_CUBE_MAP_NEGATIVE_X, - POSITIVE_Y = GL_TEXTURE_CUBE_MAP_POSITIVE_Y, - NEGATIVE_Y = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, - POSITIVE_Z = GL_TEXTURE_CUBE_MAP_POSITIVE_Z, - NEGATIVE_Z = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z -}; - -/** -Cube map texture, consisting of six square faces. All of the faces must be of -the same size. A cube map texture is addressed by three-dimensional texture -coordinates, with a principal range of [-1, 1]. The face is first selected -according to the largest coordinate, and the remaining two coordinates are used -to sample the face image. The images are oriented so that the cross product of -the s and t axes will point into the cube. - -All faces of a cube map texture must be allocated for it to be usable. - -Requires OpenGL version 1.3. -*/ -class TextureCube: public Texture -{ -private: - PixelFormat ifmt; - unsigned size; - unsigned allocated; - - static Vector3 directions[6]; - -public: - TextureCube(); - - /** Defines storage structure for the texture. Must be called before an - image can be uploaded. Once storage is defined, it can't be changed. */ - void storage(PixelFormat fmt, unsigned size); - - /** Allocates storage for the cube faces. The contents are initially - undefined. If storage has already been allocated, does nothing. */ - void allocate(unsigned level); - - /** Uploads image data to a face. Storage must be defined beforehand. The - image data must have dimensions and format compatible with the defined - storage. */ - void image(TextureCubeFace face, unsigned level, - PixelFormat fmt, DataType type, const void *data); - - /** Updates a rectangular region of a face. Storage must be defined and - allocated beforehand. The update region must be fully inside the texture. - The data format must be compatible with the defined storage. */ - void sub_image(TextureCubeFace face, unsigned level, - int x, int y, unsigned w, unsigned h, - PixelFormat fmt, DataType type, const void *data); - - unsigned get_size() const { return size; } -private: - unsigned get_level_size(unsigned); - -public: - /** Translates indices into face constants. Valid indices are between 0 - and 5, inclusive. */ - static TextureCubeFace enumerate_faces(unsigned); - - /** Returns a vector pointing out of the face. */ - static const Vector3 &get_face_direction(TextureCubeFace); - - /** Returns a vector in the direction of the s axis of the face. */ - static const Vector3 &get_s_direction(TextureCubeFace); - - /** Returns a vector in the direction of the t axis of the face. */ - static const Vector3 &get_t_direction(TextureCubeFace); - - /** Returns a vector pointing to the center a texel. */ - Vector3 get_texel_direction(TextureCubeFace, unsigned, unsigned); -}; - -} // namespace GL -} // namespace Msp - -#endif