diff --git a/Doxyfile b/Doxyfile
index 5e98d3b6f..5812e7017 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -205,7 +205,8 @@ ALIASES = \
"requires_gl40=@xrefitem RequiresGL40 \"Requires OpenGL 4.0\" \"Functionality requiring OpenGL 4.0\"" \
"requires_gl41=@xrefitem RequiresGL41 \"Requires OpenGL 4.1\" \"Functionality requiring OpenGL 4.1\"" \
"requires_gl42=@xrefitem RequiresGL42 \"Requires OpenGL 4.2\" \"Functionality requiring OpenGL 4.2\"" \
- "requires_extension=@xrefitem RequiresExtension \"Requires extension\" \"Functionality requiring specific OpenGL extension\""
+ "requires_extension=@xrefitem RequiresExtension \"Requires extension\" \"Functionality requiring specific OpenGL extension\"" \
+ "extension{2}=\1_\2"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
diff --git a/src/AbstractImage.h b/src/AbstractImage.h
index aad37c9c0..151b79421 100644
--- a/src/AbstractImage.h
+++ b/src/AbstractImage.h
@@ -70,7 +70,7 @@ class MAGNUM_EXPORT AbstractImage {
/**
* Depth and stencil component. For framebuffer reading only.
*
- * @requires_gl30 Extension EXT_packed_depth_stencil
+ * @requires_gl30 Extension @extension{EXT,packed_depth_stencil}
*/
DepthStencil = GL_DEPTH_STENCIL
};
@@ -87,7 +87,7 @@ class MAGNUM_EXPORT AbstractImage {
/**
* Each component half float (16bit). For framebuffer reading only.
*
- * @requires_gl30 Extension NV_half_float / ARB_half_float_pixel
+ * @requires_gl30 Extension @extension{NV,half_float} / @extension{ARB,half_float_pixel}
*/
HalfFloat = GL_HALF_FLOAT,
@@ -169,7 +169,7 @@ class MAGNUM_EXPORT AbstractImage {
* Three-component BGR, float, red and green 11bit, blue 10bit,
* 32bit total. For framebuffer reading only.
*
- * @requires_gl30 Extension EXT_packed_float
+ * @requires_gl30 Extension @extension{EXT,packed_float}
*/
B10GR11Float = GL_UNSIGNED_INT_10F_11F_11F_REV,
@@ -178,7 +178,7 @@ class MAGNUM_EXPORT AbstractImage {
* component 9bit, exponent 5bit, 32bit total. For framebuffer
* reading only.
*
- * @requires_gl30 Extension EXT_texture_shared_exponent
+ * @requires_gl30 Extension @extension{EXT,texture_shared_exponent}
*/
Exponent5RGB9 = GL_UNSIGNED_INT_5_9_9_9_REV,
@@ -186,7 +186,7 @@ class MAGNUM_EXPORT AbstractImage {
* 24bit depth and 8bit stencil component, 32bit total. For
* framebuffer reading only.
*
- * @requires_gl30 Extension EXT_packed_depth_stencil
+ * @requires_gl30 Extension @extension{EXT,packed_depth_stencil}
*/
Depth24Stencil8 = GL_UNSIGNED_INT_24_8,
@@ -194,7 +194,7 @@ class MAGNUM_EXPORT AbstractImage {
* 32bit float depth component and 8bit stencil component, 64bit
* total. For framebuffer reading only.
*
- * @requires_gl30 Extension ARB_depth_buffer_float
+ * @requires_gl30 Extension @extension{ARB,depth_buffer_float}
*/
Depth32FloatStencil8 = GL_FLOAT_32_UNSIGNED_INT_24_8_REV
};
diff --git a/src/AbstractShaderProgram.h b/src/AbstractShaderProgram.h
index 9512cca73..917083915 100644
--- a/src/AbstractShaderProgram.h
+++ b/src/AbstractShaderProgram.h
@@ -166,7 +166,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
* @note This function should be called between loadShader() calls
* and link().
*
- * @requires_gl30 Extension EXT_gpu_shader4
+ * @requires_gl30 Extension @extension{EXT,gpu_shader4}
*/
void bindFragmentDataLocation(GLuint location, const std::string& name);
@@ -236,7 +236,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
/**
* @copydoc setUniform(GLint, GLint)
*
- * @requires_gl30 Extension EXT_gpu_shader4
+ * @requires_gl30 Extension @extension{EXT,gpu_shader4}
*/
inline void setUniform(GLint location, GLuint value) {
glUniform1ui(location, value);
@@ -245,7 +245,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
/**
* @copydoc setUniform(GLint, GLint)
*
- * @requires_gl30 Extension EXT_gpu_shader4
+ * @requires_gl30 Extension @extension{EXT,gpu_shader4}
*/
inline void setUniform(GLint location, const Math::Vector2& value) {
glUniform2uiv(location, 1, value.data());
@@ -254,7 +254,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
/**
* @copydoc setUniform(GLint, GLint)
*
- * @requires_gl30 Extension EXT_gpu_shader4
+ * @requires_gl30 Extension @extension{EXT,gpu_shader4}
*/
inline void setUniform(GLint location, const Math::Vector3& value) {
glUniform3uiv(location, 1, value.data());
@@ -263,7 +263,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
/**
* @copydoc setUniform(GLint, GLuint)
*
- * @requires_gl30 Extension EXT_gpu_shader4
+ * @requires_gl30 Extension @extension{EXT,gpu_shader4}
*/
inline void setUniform(GLint location, const Math::Vector4& value) {
glUniform4uiv(location, 1, value.data());
diff --git a/src/AbstractTexture.h b/src/AbstractTexture.h
index 319d84adf..00f94856c 100644
--- a/src/AbstractTexture.h
+++ b/src/AbstractTexture.h
@@ -119,56 +119,56 @@ class MAGNUM_EXPORT AbstractTexture {
/**
* (Non-normalized) unsigned byte
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
UnsignedByte,
/**
* (Non-normalized) byte
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
Byte,
/**
* (Non-normalized) unsigned short
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
UnsignedShort,
/**
* (Non-normalized) short
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
Short,
/**
* (Non-normalized) unsigned integer
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
UnsignedInt,
/**
* (Non-normalized) integer
*
- * @requires_gl30 Extension EXT_texture_integer
+ * @requires_gl30 Extension @extension{EXT,texture_integer}
*/
Int,
/**
* Half float (16 bit)
*
- * @requires_gl30 Extension ARB_texture_float
+ * @requires_gl30 Extension @extension{ARB,texture_float}
*/
Half,
/**
* Float (32 bit)
*
- * @requires_gl30 Extension ARB_texture_float
+ * @requires_gl30 Extension @extension{ARB,texture_float}
*/
Float,
@@ -270,7 +270,7 @@ class MAGNUM_EXPORT AbstractTexture {
* Four-component RGBA, unsigned non-normalized, each RGB
* component 10bit, alpha channel 2bit, 32bit total.
*
- * @requires_gl33 Extension ARB_texture_rgb10_a2ui
+ * @requires_gl33 Extension @extension{ARB,texture_rgb10_a2ui}
*/
RGB10Alpha2Unsigned = GL_RGB10_A2UI,
@@ -290,7 +290,7 @@ class MAGNUM_EXPORT AbstractTexture {
* Three-component RGB, float, red and green 11bit, blue 10bit,
* 32bit total.
*
- * @requires_gl30 Extension EXT_packed_float
+ * @requires_gl30 Extension @extension{EXT,packed_float}
*/
RG11B10Float = GL_R11F_G11F_B10F,
@@ -306,7 +306,7 @@ class MAGNUM_EXPORT AbstractTexture {
* Three-component RGB, unsigned with exponent, each component
* 9bit, exponent 5bit, 32bit total.
*
- * @requires_gl30 Extension EXT_texture_shared_exponent
+ * @requires_gl30 Extension @extension{EXT,texture_shared_exponent}
*/
RGB9Exponent5 = GL_RGB9_E5,
@@ -325,59 +325,59 @@ class MAGNUM_EXPORT AbstractTexture {
/**
* RTGC compressed red channel, unsigned normalized.
*
- * @requires_gl30 Extension EXT_texture_compression_rgtc
+ * @requires_gl30 Extension @extension{EXT,texture_compression_rgtc}
*/
CompressedRtgcRed = GL_COMPRESSED_RED_RGTC1,
/**
* RTGC compressed red channel, signed normalized.
*
- * @requires_gl30 Extension EXT_texture_compression_rgtc
+ * @requires_gl30 Extension @extension{EXT,texture_compression_rgtc}
*/
CompressedRtgcSignedRed = GL_COMPRESSED_SIGNED_RED_RGTC1,
/**
* RTGC compressed red and green channel, unsigned normalized.
*
- * @requires_gl30 Extension EXT_texture_compression_rgtc
+ * @requires_gl30 Extension @extension{EXT,texture_compression_rgtc}
*/
CompressedRtgcRedGreen = GL_COMPRESSED_RG_RGTC2,
/**
* RTGC compressed red and green channel, signed normalized.
*
- * @requires_gl30 Extension EXT_texture_compression_rgtc
+ * @requires_gl30 Extension @extension{EXT,texture_compression_rgtc}
*/
CompressedRtgcSignedRedGreen = GL_COMPRESSED_SIGNED_RG_RGTC2,
#if defined(GL_COMPRESSED_RGBA_BPTC_UNORM) || defined(DOXYGEN_GENERATING_OUTPUT)
/**
- * BTPC compressed RGBA, unsigned normalized.
+ * BPTC compressed RGBA, unsigned normalized.
*
- * @requires_gl42 Extension ARB_texture_compression_btpc
+ * @requires_gl42 Extension @extension{ARB,texture_compression_bptc}
*/
- CompressedBtpcRGBA = GL_COMPRESSED_RGBA_BPTC_UNORM,
+ CompressedBptcRGBA = GL_COMPRESSED_RGBA_BPTC_UNORM,
/**
- * BTPC compressed sRGBA, unsigned normalized.
+ * BPTC compressed sRGBA, unsigned normalized.
*
- * @requires_gl42 Extension ARB_texture_compression_btpc
+ * @requires_gl42 Extension @extension{ARB,texture_compression_bptc}
*/
- CompressedBtpcSRGBA = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM,
+ CompressedBptcSRGBA = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM,
/**
- * BTPC compressed RGB, signed float.
+ * BPTC compressed RGB, signed float.
*
- * @requires_gl42 Extension ARB_texture_compression_btpc
+ * @requires_gl42 Extension @extension{ARB,texture_compression_bptc}
*/
- CompressedBtpcRGBSignedFloat = GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT,
+ CompressedBptcRGBSignedFloat = GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT,
/**
- * BTPC compressed RGB, unsigned float.
+ * BPTC compressed RGB, unsigned float.
*
- * @requires_gl42 Extension ARB_texture_compression_btpc
+ * @requires_gl42 Extension @extension{ARB,texture_compression_bptc}
*/
- CompressedBtpcRGBUnsignedFloat = GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT,
+ CompressedBptcRGBUnsignedFloat = GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT,
#endif
/** Depth component. */
@@ -395,21 +395,21 @@ class MAGNUM_EXPORT AbstractTexture {
/**
* 32bit float depth component.
*
- * @requires_gl30 Extension ARB_depth_buffer_float
+ * @requires_gl30 Extension @extension{ARB,depth_buffer_float}
*/
Depth32Float = GL_DEPTH_COMPONENT32F,
/**
* 24bit depth and 8bit stencil component.
*
- * @requires_gl30 Extension EXT_packed_depth_stencil
+ * @requires_gl30 Extension @extension{EXT,packed_depth_stencil}
*/
Depth24Stencil8 = GL_DEPTH24_STENCIL8,
/**
* 32bit float depth component and 8bit stencil component.
*
- * @requires_gl30 Extension ARB_depth_buffer_float
+ * @requires_gl30 Extension @extension{ARB,depth_buffer_float}
*/
Depth32FloatStencil8 = GL_DEPTH32F_STENCIL8
};
@@ -451,7 +451,7 @@ class MAGNUM_EXPORT AbstractTexture {
* @brief Max supported anisotropy
*
* @see setMaxAnisotropy()
- * @requires_extension EXT_texture_filter_anisotropic
+ * @requires_extension @extension{EXT,texture_filter_anisotropic}
*/
static GLfloat maxSupportedAnisotropy();
@@ -538,7 +538,7 @@ class MAGNUM_EXPORT AbstractTexture {
* Default value is `1.0`, which means no anisotropy. Set to value
* greater than `1.0` for anisotropic filtering.
* @see maxSupportedAnisotropy()
- * @requires_extension EXT_texture_filter_anisotropic
+ * @requires_extension @extension{EXT,texture_filter_anisotropic}
*/
inline void setMaxAnisotropy(GLfloat anisotropy) {
bind();
@@ -550,7 +550,7 @@ class MAGNUM_EXPORT AbstractTexture {
*
* Can not be used for rectangle textures.
* @see setMinificationFilter()
- * @requires_gl30 Extension EXT_framebuffer_object
+ * @requires_gl30 Extension @extension{EXT,framebuffer_object}
*/
void generateMipmap();
diff --git a/src/Buffer.h b/src/Buffer.h
index 4acf393a4..34e5fae9e 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -43,7 +43,7 @@ class Buffer {
/**
* Source for copies.
*
- * @requires_gl31 Extension ARB_copy_buffer
+ * @requires_gl31 Extension @extension{ARB,copy_buffer}
*/
#if defined(GL_COPY_READ_BUFFER_BINDING) || defined(DOXYGEN_GENERATING_OUTPUT)
CopyRead = GL_COPY_READ_BUFFER_BINDING,
@@ -54,7 +54,7 @@ class Buffer {
/**
* Target for copies.
*
- * @requires_gl31 Extension ARB_copy_buffer
+ * @requires_gl31 Extension @extension{ARB,copy_buffer}
*/
#if defined(GL_COPY_WRITE_BUFFER_BINDING) || defined(DOXYGEN_GENERATING_OUTPUT)
CopyWrite = GL_COPY_WRITE_BUFFER_BINDING,
@@ -75,28 +75,28 @@ class Buffer {
* Source for texel fetches.
*
* @see BufferedTexture
- * @requires_gl31 Extension ARB_texture_buffer_object
+ * @requires_gl31 Extension @extension{ARB,texture_buffer_object}
*/
Texture = GL_TEXTURE_BUFFER,
/**
* Target for transform feedback.
*
- * @requires_gl30 Extension EXT_transform_feedback
+ * @requires_gl30 Extension @extension{EXT,transform_feedback}
*/
TransformFeedback = GL_TRANSFORM_FEEDBACK_BUFFER,
/**
* Used for storing uniforms.
*
- * @requires_gl31 Extension ARB_uniform_buffer_object
+ * @requires_gl31 Extension @extension{ARB,uniform_buffer_object}
*/
Uniform = GL_UNIFORM_BUFFER,
/**
* Used for supplying arguments for instanced drawing.
*
- * @requires_gl40 Extension ARB_draw_indirect
+ * @requires_gl40 Extension @extension{ARB,draw_indirect}
*/
DrawIndirect = GL_DRAW_INDIRECT_BUFFER
};
diff --git a/src/BufferedTexture.h b/src/BufferedTexture.h
index c29f69c99..a1ea04f3e 100644
--- a/src/BufferedTexture.h
+++ b/src/BufferedTexture.h
@@ -36,7 +36,7 @@ using data setting functions in Buffer itself.
When using buffered texture in the shader, use `samplerBuffer` and fetch the
data using integer coordinates in `texelFetch()`.
-@requires_gl31 Extension ARB_texture_buffer_object
+@requires_gl31 Extension @extension{ARB,texture_buffer_object}
*/
class BufferedTexture {
BufferedTexture(const BufferedTexture& other) = delete;
@@ -63,7 +63,7 @@ class BufferedTexture {
/**
* Three-component RGB, float, each component 32bit, 96bit total.
*
- * @requires_gl40 Extension ARB_texture_buffer_object_rgb32
+ * @requires_gl40 Extension @extension{ARB,texture_buffer_object_rgb32}
*/
RGB32Float = GL_RGB32F,
@@ -71,7 +71,7 @@ class BufferedTexture {
* Three-component RGB, unsigned non-normalized, each component
* 32bit, 96bit total.
*
- * @requires_gl40 Extension ARB_texture_buffer_object_rgb32
+ * @requires_gl40 Extension @extension{ARB,texture_buffer_object_rgb32}
*/
RGB32UnsignedInt = GL_RGB32UI,
@@ -79,7 +79,7 @@ class BufferedTexture {
* Three-component RGB, signed non-normalized, each component
* 32bit, 96bit total.
*
- * @requires_gl40 Extension ARB_texture_buffer_object_rgb32
+ * @requires_gl40 Extension @extension{ARB,texture_buffer_object_rgb32}
*/
RGB32Int = GL_RGB32I
};
diff --git a/src/Camera.h b/src/Camera.h
index e3ff67ff8..9718c430d 100644
--- a/src/Camera.h
+++ b/src/Camera.h
@@ -45,7 +45,7 @@ class MAGNUM_EXPORT Camera: public Object {
/**
* Depth clamping. If enabled, ignores near and far clipping plane.
*
- * @requires_gl32 Extension ARB_depth_clamp
+ * @requires_gl32 Extension @extension{ARB,depth_clamp}
*/
DepthClamp = GL_DEPTH_CLAMP,
diff --git a/src/CubeMapTexture.h b/src/CubeMapTexture.h
index 05882293d..e655ae458 100644
--- a/src/CubeMapTexture.h
+++ b/src/CubeMapTexture.h
@@ -61,7 +61,7 @@ class CubeMapTexture: public AbstractTexture {
/**
* @brief Enable/disable seamless cube map textures
*
- * @requires_gl32 Extension ARB_seamless_cube_map
+ * @requires_gl32 Extension @extension{ARB,seamless_cube_map}
*/
inline static void setSeamless(bool enabled) {
enabled ? glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS) : glDisable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
diff --git a/src/CubeMapTextureArray.h b/src/CubeMapTextureArray.h
index 129b4fb4c..4c5eaefc0 100644
--- a/src/CubeMapTextureArray.h
+++ b/src/CubeMapTextureArray.h
@@ -33,7 +33,7 @@ classic textures, coordinates for cube map textures is signed three-part
vector from the center of the cube, which intersects one of the six sides of
the cube map.
-@requires_gl40 Extension ARB_texture_cube_map_array
+@requires_gl40 Extension @extension{ARB,texture_cube_map_array}
*/
class CubeMapTextureArray: public AbstractTexture {
public:
@@ -50,7 +50,7 @@ class CubeMapTextureArray: public AbstractTexture {
/**
* @brief Enable/disable seamless cube map textures
*
- * @requires_gl32 Extension ARB_seamless_cube_map
+ * @requires_gl32 Extension @extension{ARB,seamless_cube_map}
*/
inline static void setSeamless(bool enabled) {
enabled ? glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS) : glDisable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
diff --git a/src/Framebuffer.h b/src/Framebuffer.h
index 1e7ec9a97..9a564efe4 100644
--- a/src/Framebuffer.h
+++ b/src/Framebuffer.h
@@ -29,7 +29,7 @@ namespace Magnum {
/**
@brief %Framebuffer
-@requires_gl30 Extension EXT_framebuffer_object
+@requires_gl30 Extension @extension{EXT,framebuffer_object}
*/
class MAGNUM_EXPORT Framebuffer {
Framebuffer(const Framebuffer& other) = delete;
@@ -43,14 +43,14 @@ class MAGNUM_EXPORT Framebuffer {
/**
* For reading only.
*
- * @requires_gl30 Extension EXT_framebuffer_blit
+ * @requires_gl30 Extension @extension{EXT,framebuffer_blit}
*/
Read = GL_READ_FRAMEBUFFER,
/**
* For drawing only.
*
- * @requires_gl30 Extension EXT_framebuffer_blit
+ * @requires_gl30 Extension @extension{EXT,framebuffer_blit}
*/
Draw = GL_DRAW_FRAMEBUFFER,
ReadDraw = GL_FRAMEBUFFER /**< For both reading and drawing. */
@@ -160,7 +160,7 @@ class MAGNUM_EXPORT Framebuffer {
* and drawing. If multiple attachments are specified in mapForDraw()
* / mapDefaultForDraw(), the data are written to each of them.
*
- * @requires_gl30 Extension EXT_framebuffer_blit
+ * @requires_gl30 Extension @extension{EXT,framebuffer_blit}
*/
inline static void blit(const Math::Vector2& bottomLeft, const Math::Vector2& topRight, const Math::Vector2& destinationBottomLeft, const Math::Vector2& destinationTopRight, BlitMask blitMask, AbstractTexture::Filter filter) {
glBlitFramebuffer(bottomLeft.x(), bottomLeft.y(), topRight.x(), topRight.y(), destinationBottomLeft.x(), destinationBottomLeft.y(), destinationTopRight.x(), destinationTopRight.y(), static_cast(blitMask), static_cast(filter));
@@ -180,7 +180,7 @@ class MAGNUM_EXPORT Framebuffer {
* AbstractTexture::Filter::NearestNeighbor filtering is used by
* default.
*
- * @requires_gl30 Extension EXT_framebuffer_blit
+ * @requires_gl30 Extension @extension{EXT,framebuffer_blit}
*/
inline static void blit(const Math::Vector2& bottomLeft, const Math::Vector2& topRight, BlitMask blitMask) {
glBlitFramebuffer(bottomLeft.x(), bottomLeft.y(), topRight.x(), topRight.y(), bottomLeft.x(), bottomLeft.y(), topRight.x(), topRight.y(), static_cast(blitMask), static_cast(AbstractTexture::Filter::NearestNeighbor));
@@ -283,8 +283,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param depthStencilAttachment Depth/stencil attachment
* @param texture 1D texture
* @param mipLevel Mip level
- *
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture1D(Target target, DepthStencilAttachment depthStencilAttachment, Texture1D* texture, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -299,8 +297,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param colorAttachment Color attachment ID (number between 0 and 15)
* @param texture 1D texture
* @param mipLevel Mip level
- *
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture1D(Target target, unsigned int colorAttachment, Texture1D* texture, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -318,7 +314,6 @@ class MAGNUM_EXPORT Framebuffer {
* should be always 0.
*
* @see attachCubeMapTexture()
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture2D(Target target, DepthStencilAttachment depthStencilAttachment, Texture2D* texture, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -336,7 +331,6 @@ class MAGNUM_EXPORT Framebuffer {
* should be always 0.
*
* @see attachCubeMapTexture()
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture2D(Target target, unsigned int colorAttachment, Texture2D* texture, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -354,7 +348,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param mipLevel Mip level
*
* @see attachTexture2D()
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachCubeMapTexture(Target target, DepthStencilAttachment depthStencilAttachment, CubeMapTexture* texture, CubeMapTexture::Coordinate coordinate, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -371,7 +364,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param mipLevel Mip level
*
* @see attachTexture2D()
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachCubeMapTexture(Target target, unsigned int colorAttachment, CubeMapTexture* texture, CubeMapTexture::Coordinate coordinate, GLint mipLevel) {
/** @todo Check for internal format compatibility */
@@ -386,8 +378,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param texture 3D texture
* @param mipLevel Mip level
* @param layer Layer of 2D image within a 3D texture
- *
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture3D(Target target, DepthStencilAttachment depthStencilAttachment, Texture3D* texture, GLint mipLevel, GLint layer) {
/** @todo Check for internal format compatibility */
@@ -403,8 +393,6 @@ class MAGNUM_EXPORT Framebuffer {
* @param texture 3D texture
* @param mipLevel Mip level
* @param layer Layer of 2D image within a 3D texture.
- *
- * @requires_gl30 Extension EXT_framebuffer_object
*/
inline void attachTexture3D(Target target, unsigned int colorAttachment, Texture3D* texture, GLint mipLevel, GLint layer) {
/** @todo Check for internal format compatibility */
diff --git a/src/Mesh.h b/src/Mesh.h
index 903131c61..6054b4200 100644
--- a/src/Mesh.h
+++ b/src/Mesh.h
@@ -36,8 +36,8 @@ class Buffer;
@todo Support for normalized values (e.g. for color as char[4] passed to
shader as floating-point vec4)
-@requires_gl30 Extension APPLE_vertex_array_object
-@requires_gl30 Extension EXT_gpu_shader4 (for unsigned integer attributes)
+@requires_gl30 Extension @extension{APPLE,vertex_array_object}
+@requires_gl30 Extension @extension{EXT,gpu_shader4} (for unsigned integer attributes)
@todo Support for provoking vertex (OpenGL 3.2, ARB_provoking_vertex)
@todo Support for packed unsigned integer types for attributes (OpenGL 3.3, ARB_vertex_type_2_10_10_10_rev)
diff --git a/src/Query.h b/src/Query.h
index e89fea6af..8823d712b 100644
--- a/src/Query.h
+++ b/src/Query.h
@@ -57,7 +57,7 @@ class MAGNUM_EXPORT AbstractQuery {
* Note that this function is blocking until the result is available.
* See resultAvailable().
*
- * @requires_gl33 Extension ARB_timer_query (64bit integers)
+ * @requires_gl33 Extension @extension{ARB,timer_query} (64bit integers)
*/
template T result();
@@ -110,7 +110,7 @@ class MAGNUM_EXPORT Query: public AbstractQuery {
/**
* Elapsed time
*
- * @requires_gl33 Extension ARB_timer_query
+ * @requires_gl33 Extension @extension{ARB,timer_query}
*/
TimeElapsed = GL_TIME_ELAPSED
};
@@ -182,7 +182,7 @@ class MAGNUM_EXPORT SampleQuery: public AbstractQuery {
/**
* Whether any samples passed from fragment shader
*
- * @requires_gl33 Extension ARB_occlusion_query2
+ * @requires_gl33 Extension @extension{ARB,occlusion_query2}
*/
AnySamplesPassed = GL_ANY_SAMPLES_PASSED
};
@@ -269,7 +269,7 @@ GLuint timeElapsed2 = q3.result()-tmp;
@endcode
Using this query results in fewer OpenGL calls when doing more measures.
-@requires_gl33 Extension ARB_timer_query
+@requires_gl33 Extension @extension{ARB,timer_query}
*/
class TimeQuery: public AbstractQuery {
public:
diff --git a/src/Renderbuffer.h b/src/Renderbuffer.h
index 04f00f94a..3fd9864a6 100644
--- a/src/Renderbuffer.h
+++ b/src/Renderbuffer.h
@@ -28,7 +28,7 @@ namespace Magnum {
Attachable to Framebuffer as render target.
-@requires_gl30 Extension EXT_framebuffer_object
+@requires_gl30 Extension @extension{EXT,framebuffer_object}
*/
class Renderbuffer {
Renderbuffer(const Renderbuffer& other) = delete;
diff --git a/src/Shader.h b/src/Shader.h
index 5b51bc520..1aa51b8ca 100644
--- a/src/Shader.h
+++ b/src/Shader.h
@@ -45,7 +45,7 @@ class MAGNUM_EXPORT Shader {
/**
* Geometry shader
*
- * @requires_gl32 Extension ARB_geometry_shader4
+ * @requires_gl32 Extension @extension{ARB,geometry_shader4}
*/
Geometry = GL_GEOMETRY_SHADER,
@@ -54,14 +54,14 @@ class MAGNUM_EXPORT Shader {
/**
* Tesselation control shader
*
- * @requires_gl40 Extension ARB_tesselation_shader
+ * @requires_gl40 Extension @extension{ARB,tessellation_shader}
*/
TesselationControl = GL_TESS_CONTROL_SHADER,
/**
* Tesselation evaluation shader
*
- * @requires_gl40 Extension ARB_tesselation_shader
+ * @requires_gl40 Extension @extension{ARB,tessellation_shader}
*/
TesselationEvaluation = GL_TESS_EVALUATION_SHADER
};
diff --git a/src/Texture.h b/src/Texture.h
index a3134b792..6bfe57989 100644
--- a/src/Texture.h
+++ b/src/Texture.h
@@ -50,7 +50,7 @@ don't support mipmapping and repeating wrapping modes, see @ref Texture::Filter
"Filter", @ref Texture::Mipmap "Mipmap" and generateMipmap() documentation
for more information.
-@requires_gl31 Extension ARB_texture_rectangle (rectangle textures)
+@requires_gl31 Extension @extension{ARB,texture_rectangle} (rectangle textures)
@see CubeMapTexture, CubeMapTextureArray
*/
@@ -72,21 +72,21 @@ template class Texture: public AbstractTexture {
/**
* One-dimensional texture array (i.e. two dimensions in total)
*
- * @requires_gl30 Extension EXT_texture_array
+ * @requires_gl30 Extension @extension{EXT,texture_array}
*/
Texture1DArray = GL_TEXTURE_1D_ARRAY,
/**
* Two-dimensional texture array (i.e. three dimensions in total)
*
- * @requires_gl30 Extension EXT_texture_array
+ * @requires_gl30 Extension @extension{EXT,texture_array}
*/
Texture2DArray = GL_TEXTURE_2D_ARRAY,
/**
* Rectangle texture (i.e. two dimensions)
*
- * @requires_gl31 Extension ARB_texture_rectangle
+ * @requires_gl31 Extension @extension{ARB,texture_rectangle}
*/
Rectangle = GL_TEXTURE_RECTANGLE
};