Functions for setting 2D subimage of 3D texture / 1D subimage of 2D
texture introduced in 728ddb19a3 weren't
probably tested at all, as they are ambiguous overloads.
Now using std::enable_if, which works.
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.
Some functions need to return "invalid ID", which in case of size_t
cannot be -1.
Also the plugins should behave the same in 32/64bit systems, so the type
should be the same for both.
* CMAKE_SHARED_LIBRARY_CXX_FLAGS is empty here, caused CMake errors.
* CMake's OBJECT target has a bug that it doesn't define target_EXPORTS
as with other library targets, so it's needed to define it manually.
It also fixes empty flags issue.
* Visibility headers weren't updated for OBJECT targets, they now also
catch *Objects_EXPORTS defines.
According to OpenGL specification the sampler uniform takes only texture
layer and not any particular texture. In OpenGL 4.2 it is possible to
explicitly specify desired texture layer in the uniform, so I suppose
it's desired to have shader with fixed texture layers and on the other
hand be able to bind texture to any layer, not only one -- the exact
opposite of how it was in Magnum before.
The shader should now specify in its public API which texture is on
which layer and explicitly set the layer uniforms upon construction. All
setUniform() functions taking textures as argument were thus removed, as
they confuse things a lot.
The textures now have bind() function which takes layer as argument, so
it's now sufficient to only bind the texture before drawing the mesh
without messing with sampler uniform.
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.
* All pages are now named with lowercased letters with dashes between
letters.
* Added coding style guidelines.
* Extended building documentation with guide how to download Magnum.
Now it is exposed as protected function, so it can be called from
subclasses. It now clears() only set features, so when stencil or depth
test is not enables, it doesn't clear their buffers.
Preferred workflow is to specify attribute location explicitly in the
shader. The functions remains here as some old Intel systems don't
support the required extension ARB_explicit_attrib_location (and it's
not in GL 3.0 either). Also updated and fixed the documentation.
Function bindAttribute() was renamed to bindAttributeLocation() to be
consistent with bindFragmentDataLocation().
PhongShader now uses explicit attribute location.
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.
For classes which already have pure virtual functions instantiation is
not allowed, but for other there needs to be at least one pure virtual
method: the destructor.
Pure virtual functions actually can have implementations, but they must
be called explicitly. Destructors are called explicitly, so for them it
works.