Desktop OpenGL and OpenGL ES 2 support can be switched using CMake
TARGET_GLES option. All functionality not supported in ES is marked in
documentation.
If targetting OpenGL ES, GLES2/gl2.h is included instead of GLEW.
Mesh class now uses VAOs only in desktop OpenGL, in ES the buffers are
bound on each draw call.
While namespaces act for hierarchy, modules are something like "tags" -
usable when you want to check related classes of e.g. CubeMapTexture.
Not sure how to name module for Math and Physics namespaces and
Contexts/Trade, though.
Fixed a few typos in extension names, fixed BPTC texture compression
typos. Removed redundant EXT_framebuffer_object from functions as the
Framebuffer class itself has it.
Reusing macros MAGNUM_EXPORT and friends already used for Windows
builds. For exported classes added MAGNUM_LOCAL to private members which
are not referenced from any inline function. Added explicit
MAGNUM_EXPORT to private members which are referenced. CMake provides
its own macro <target>_EXPORTS, using that instead of
set_target_properties().
The requirements are cross-referenced to dedicated page, similarly to
TODO and bug lists.
Also updated / improved documentation for some texture / image formats.
* All attribute pointers and buffer binding is now stored in each
mesh own vertex array object, thus each mesh drawing now needs
only three OpenGL calls.
* Removed default VAO from Scene, which fixes unit test crashes.
Checking whether given type can be used for mesh indices or image data
was always done like this, because it was also needed to get OpenGL type
ID for the type:
TypeTraits<typename TypeTraits<T>::IndexType>::glType()
This was cumbersome, now the check is done using function, which
returns the OpenGL type ID directly:
TypeTraits<T>::indexType()
Also replaced TextureType with imageType() and renamed glType() to just
type().
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.
Now the data type is part of attribute definition, so user doesn't have
to guess / look up what data should be there when binding with
Mesh::bindAttribute().
Not using macro this time, as some classes could want only to disable
either copy or move and with macros this would become unintuitive and
error-prone.