X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexturecube.h;h=0882a5e31004c3cef3e129b65ff24a2671e88fc0;hp=fd4670469fd1ab0500b607a35e723fe7e9205b65;hb=b38a4cba9d2a9963a0937757eff9e955f18ddf2a;hpb=ccbfdfa0d9d796244b1ecc0fa3faa2c50304811b diff --git a/source/texturecube.h b/source/texturecube.h index fd467046..0882a5e3 100644 --- a/source/texturecube.h +++ b/source/texturecube.h @@ -49,18 +49,23 @@ public: }; private: - PixelFormat ifmt; unsigned size; + unsigned levels; unsigned allocated; + static TextureCubeFace face_order[6]; static Vector3 directions[6]; + static unsigned orientations[12]; 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); + /** Defines storage structure for the texture. If lv is zero, the number + of mipmap levels is automatically determined from storage dimensions. + + Must be called before an image can be uploaded. Once storage is defined, + it can't be changed. */ + void storage(PixelFormat fmt, unsigned size, unsigned lv = 0); /** Allocates storage for the cube faces. The contents are initially undefined. If storage has already been allocated, does nothing. */ @@ -85,13 +90,16 @@ public: unsigned get_size() const { return size; } private: - unsigned get_level_size(unsigned); + unsigned get_n_levels() const; + unsigned get_level_size(unsigned) const; public: /** Translates indices into face constants. Valid indices are between 0 and 5, inclusive. */ static TextureCubeFace enumerate_faces(unsigned); + static unsigned get_face_index(TextureCubeFace); + /** Returns a vector pointing out of the face. */ static const Vector3 &get_face_direction(TextureCubeFace);