Long-standing TODO. It is better to have size first, because it is more
significant than type (e.g. because there are Vector4<T> specializations
and not VectorT<4> specializations). It is also IMHO easier for user to
distinguish/read the type than before:
Vector<float, 4> -> Vector4<float> // before
Vector<4, float> -> Vector4<float> // now
Texture now doesn't have it's own redundant copy of target, but uses the
one from AbstractTexture. Subsequently, all DataHelper functions now
accept "untyped" GLenum as target for better flexibility.
CubeMapTexture is not based on Texture2D anymore, all references to cube
map textures were removed from Target enums, so it's now not possible to
create cube map texture other way than using CubeMapTexture class, which
is how it should be done in first place. The wrapping mode fix is thus
now trivial.
The requirements are cross-referenced to dedicated page, similarly to
TODO and bug lists.
Also updated / improved documentation for some texture / image formats.
* Added asserts for unsupported mipmap and wrapping modes instead of
previous blind behavior, moved more-than-one-liner functions into
*.cpp
* Updated documentation to reflect the rectangle texture inabilities to
user, changed "unusable" to "incomplete" to be consistent with OpenGL
terminology.
* Removed some unneeded rows in documentation.
All HTML code and Doxygen shortcuts such as @c, @b and @em are now
rewritten using Markdown syntax, which makes it more readable.
Also updated Doxyfile. Doxygen 1.8 at least is required to generate
the documentation now.
These classes are meant to be used in the same texture updating
functions as Trade::ImageData due to static polymorphism. In addition to
Trade::ImageData, which is read-only, these classes support updating the
dimensions and data. Image2D and ImageBuffer2D can update the data also
from framebuffer.
Start of AbstractImporter rework - Trade namespace will contain simple
classes usable for exchanging data with other formats, importers will
not depend on any OpenGL functionality, they will just provide access to
plain data.
While GL_TEXTURE_2D == GL_TEXTURE_1D + 1, GL_TEXTURE_3D is something
absolutely different and cannot be computed like this. Now done via
AbstractTexture::DataHelper, which is cleaner and better readable.
Renamed the constants so they are better readable when passed to
setMinificationFilter(). Using self-documenting values for Mipmap enum,
added static_assert which checks their correctness.
Instead of large if() block for calling either glTexImage1D,
glTexImage2D or glTexImage3D the class now uses internal helper functor,
which should lead to shorter generated code and also prevent using
wrong dimension count.