From d45857feb08d1eb85dfa38cc99c88b1bc95a580f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 10 Apr 2014 16:57:10 +0200 Subject: [PATCH] doc: texture documentation updates. Remove duplicates, add minimal multisample docs, update GL function mapping table. --- doc/opengl-mapping.dox | 20 ++++++------- src/Magnum/AbstractTexture.h | 7 +++-- src/Magnum/BufferTexture.h | 7 ++--- src/Magnum/CubeMapTexture.h | 3 +- src/Magnum/CubeMapTextureArray.h | 46 +++++++++++++++++------------- src/Magnum/MultisampleTexture.h | 19 +++++++++---- src/Magnum/RectangleTexture.h | 48 ++++++++++++++------------------ src/Magnum/Texture.h | 41 ++++++++++++++------------- src/Magnum/TextureArray.h | 7 ++--- 9 files changed, 105 insertions(+), 93 deletions(-) diff --git a/doc/opengl-mapping.dox b/doc/opengl-mapping.dox index 7d77dc62f..5ec4fc419 100644 --- a/doc/opengl-mapping.dox +++ b/doc/opengl-mapping.dox @@ -178,8 +178,8 @@ OpenGL function | Matching API @fn_gl{GetSubroutineIndex} | | @fn_gl{GetSubroutineUniformLocation} | | @fn_gl{GetSync} | | -@fn_gl{GetTexImage}, \n @fn_gl_extension{GetTextureImage,EXT,direct_state_access}, \n @fn_gl_extension{GetnTexImage,ARB,robustness} | @ref Texture::image(), \n @ref CubeMapTexture::image(), \n @ref CubeMapTextureArray::image() -@fn_gl{GetTexLevelParameter}, \n @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} | @ref Texture::imageSize(), \n @ref CubeMapTexture::imageSize(), \n @ref CubeMapTextureArray::imageSize() +@fn_gl{GetTexImage}, \n @fn_gl_extension{GetTextureImage,EXT,direct_state_access}, \n @fn_gl_extension{GetnTexImage,ARB,robustness} | @ref Texture::image(), \n @ref TextureArray::image(), \n @ref CubeMapTexture::image(), \n @ref CubeMapTextureArray::image(), \n @ref RectangleTexture::image() +@fn_gl{GetTexLevelParameter}, \n @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} | @ref Texture::imageSize(), \n @ref TextureArray::imageSize(), \n @ref CubeMapTexture::imageSize(), \n @ref CubeMapTextureArray::imageSize(), \n @ref RectangleTexture::imageSize() @fn_gl{GetTexParameter} | | @fn_gl{GetTransformFeedbackVarying} | | @fn_gl{GetUniform} | not queryable, @ref AbstractShaderProgram::setUniform() setter only @@ -192,8 +192,8 @@ OpenGL function | Matching API @fn_gl{InvalidateBufferSubData} | @ref Buffer::invalidateSubData() @fn_gl{InvalidateFramebuffer}, \n @fn_gles_extension{DiscardFramebuffer,EXT,discard_framebuffer} | @ref DefaultFramebuffer::invalidate(), \n @ref Framebuffer::invalidate() @fn_gl{InvalidateSubFramebuffer}, \n @fn_gles_extension{DiscardSubFramebuffer,EXT,discard_framebuffer} | @ref DefaultFramebuffer::invalidate(), \n @ref Framebuffer::invalidate() -@fn_gl{InvalidateTexImage} | @ref Texture::invalidateImage(), \n @ref TextureArray::invalidateImage(), \n @ref CubeMapTexture::invalidateImage(), \n @ref CubeMapTextureArray::invalidateImage(), \n @ref MultisampleTexture::invalidateImage(), \n @ref RectangleTexture::invalidateImage() -@fn_gl{InvalidateTexSubImage} | @ref Texture::invalidateSubImage(), \n @ref TextureArray::invalidateSubImage(), \n @ref CubeMapTexture::invalidateSubImage(), \n @ref CubeMapTextureArray::invalidateSubImage(), \n @ref MultisampleTexture::invalidateSubImage(), \n @ref RectangleTexture::invalidateSubImage() +@fn_gl{InvalidateTexImage} | @ref Texture::invalidateImage(), \n @ref TextureArray::invalidateImage(), \n @ref CubeMapTexture::invalidateImage(), \n @ref CubeMapTextureArray::invalidateImage(), \n @ref RectangleTexture::invalidateImage(), \n @ref MultisampleTexture::invalidateImage() +@fn_gl{InvalidateTexSubImage} | @ref Texture::invalidateSubImage(), \n @ref TextureArray::invalidateSubImage(), \n @ref CubeMapTexture::invalidateSubImage(), \n @ref CubeMapTextureArray::invalidateSubImage(), \n @ref RectangleTexture::invalidateSubImage(), \n @ref MultisampleTexture::invalidateSubImage() @fn_gl{IsBuffer}, \n @fn_gl{IsFramebuffer}, \n @fn_gl{IsProgram}, \n @fn_gl{IsProgramPipeline}, \n @fn_gl{IsQuery}, \n @fn_gl{IsRenderbuffer}, \n @fn_gl{IsSampler}, \n @fn_gl{IsShader}, \n @fn_gl{IsSync}, \n @fn_gl{IsTexture}, \n @fn_gl{IsTransformFeedback}, \n @fn_gl{IsVertexArray} | not needed, objects are strongly typed @fn_gl{IsEnabled} | not queryable, @ref Renderer::setFeature() setter only @fn_gl{LineWidth} | @ref Renderer::setLineWidth() @@ -236,12 +236,12 @@ OpenGL function | Matching API @fn_gl{StencilMask}, \n @fn_gl{StencilMaskSeparate} | @ref Renderer::setStencilMask() @fn_gl{StencilOp}, \n @fn_gl{StencilOpSeparate} | @ref Renderer::setStencilOperation() @fn_gl{TexBuffer}, \n @fn_gl_extension{TextureBuffer,EXT,direct_state_access}, \n @fn_gl{TexBufferRange}, \n @fn_gl_extension{TextureBufferRange,EXT,direct_state_access} | @ref BufferTexture::setBuffer() -@fn_gl{TexImage1D}, \n @fn_gl_extension{TextureImage1D,EXT,direct_state_access} \n @fn_gl{TexImage2D}, \n @fn_gl_extension{TextureImage2D,EXT,direct_state_access}, \n @fn_gl{TexImage3D}, \n @fn_gl_extension{TextureImage3D,EXT,direct_state_access} | @ref Texture::setImage(), \n @ref CubeMapTexture::setImage(), \n @ref CubeMapTextureArray::setImage() -@fn_gl{TexImage2DMultisample}, \n @fn_gl{TexImage3DMultisample} | | -@fn_gl{TexParameter}, \n @fn_gl_extension{TextureParameter,EXT,direct_state_access} | @ref Texture::setMinificationFilter(), \n @ref TextureArray::setMinificationFilter(), \n @ref CubeMapTexture::setMinificationFilter(), \n @ref CubeMapTextureArray::setMinificationFilter(), \n @ref RectangleTexture::setMinificationFilter(), \n @ref Texture::setMagnificationFilter(), \n @ref TextureArray::setMagnificationFilter(), \n @ref CubeMapTexture::setMagnificationFilter(), \n @ref CubeMapTextureArray::setMagnificationFilter(), \n @ref RectangleTexture::setMagnificationFilter(), \n @ref Texture::setBorderColor(), \n @ref TextureArray::setBorderColor(), \n @ref CubeMapTexture::setBorderColor(), \n @ref CubeMapTextureArray::setBorderColor(), \n @ref RectangleTexture::setBorderColor(), \n @ref Texture::setMaxAnisotropy(), \n @ref TextureArray::setMaxAnisotropy(), \n @ref CubeMapTexture::setMaxAnisotropy(), \n @ref CubeMapTextureArray::setMaxAnisotropy(), \n @ref RectangleTexture::setMaxAnisotropy(), \n @ref Texture::setWrapping(), \n @ref TextureArray::setWrapping(), \n @ref CubeMapTexture::setWrapping(), \n @ref CubeMapTextureArray::setWrapping(), \n @ref RectangleTexture::setWrapping() -@fn_gl{TexStorage1D}, \n @fn_gl_extension{TextureStorage1D,EXT,direct_state_access}, \n @fn_gl{TexStorage2D}, \n @fn_gl_extension{TextureStorage2D,EXT,direct_state_access}, \n @fn_gl{TexStorage3D}, \n @fn_gl_extension{TextureStorage3D,EXT,direct_state_access} | @ref Texture::setStorage(), \n @ref CubeMapTexture::setStorage(), \n @ref CubeMapTextureArray::setStorage() -@fn_gl{TexStorage2DMultisample}, \n @fn_gl{TexStorage3DMultisample} | | -@fn_gl{TexSubImage1D}, \n @fn_gl_extension{TextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{TexSubImage2D}, \n @fn_gl_extension{TextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{TexSubImage3D}, \n @fn_gl_extension{TextureSubImage3D,EXT,direct_state_access} | @ref Texture::setSubImage(), \n @ref CubeMapTexture::setSubImage(), \n @ref CubeMapTextureArray::setSubImage() +@fn_gl{TexImage1D}, \n @fn_gl_extension{TextureImage1D,EXT,direct_state_access} \n @fn_gl{TexImage2D}, \n @fn_gl_extension{TextureImage2D,EXT,direct_state_access}, \n @fn_gl{TexImage3D}, \n @fn_gl_extension{TextureImage3D,EXT,direct_state_access} | @ref Texture::setImage(), \n @ref TextureArray::setImage(), \n @ref CubeMapTexture::setImage(), \n @ref CubeMapTextureArray::setImage(), \n @ref RectangleTexture::setImage() +@fn_gl{TexImage2DMultisample}, \n @fn_gl{TexImage3DMultisample} | @ref MultisampleTexture::setStorage() +@fn_gl{TexParameter}, \n @fn_gl_extension{TextureParameter,EXT,direct_state_access} | @ref Texture::setBaseLevel() "*Texture::setBaseLevel()", \n @ref Texture::setMaxLevel() "*Texture::setMaxLevel()", \n @ref Texture::setMinificationFilter() "*Texture::setMinificationFilter()", \n @ref Texture::setMagnificationFilter() "*Texture::setMagnificationFilter()", \n @ref Texture::setWrapping() "*Texture::setWrapping()", \n @ref Texture::setBorderColor() "*Texture::setBorderColor()", \n @ref Texture::setMaxAnisotropy() "*Texture::setMaxAnisotropy()" +@fn_gl{TexStorage1D}, \n @fn_gl_extension{TextureStorage1D,EXT,direct_state_access}, \n @fn_gl{TexStorage2D}, \n @fn_gl_extension{TextureStorage2D,EXT,direct_state_access}, \n @fn_gl{TexStorage3D}, \n @fn_gl_extension{TextureStorage3D,EXT,direct_state_access} | @ref Texture::setStorage(), \n @ref TextureArray::setStorage(), \n @ref CubeMapTexture::setStorage(), \n @ref CubeMapTextureArray::setStorage(), \n @ref RectangleTexture::setStorage() +@fn_gl{TexStorage2DMultisample}, \n @fn_gl_extension{TextureStorage2DMultisample,EXT,direct_state_access}, \n @fn_gl{TexStorage3DMultisample}, \n @fn_gl_extension{TextureStorage3DMultisample,EXT,direct_state_access} | @ref MultisampleTexture::setStorage() +@fn_gl{TexSubImage1D}, \n @fn_gl_extension{TextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{TexSubImage2D}, \n @fn_gl_extension{TextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{TexSubImage3D}, \n @fn_gl_extension{TextureSubImage3D,EXT,direct_state_access} | @ref Texture::setSubImage(), \n @ref TextureArray::setSubImage(), \n @ref CubeMapTexture::setSubImage(), \n @ref CubeMapTextureArray::setSubImage(), \n @ref RectangleTexture::setSubImage() @fn_gl{TextureView} | | @fn_gl{TransformFeedbackVaryings} | | @fn_gl{Uniform}, \n @fn_gl{ProgramUniform}, \n @fn_gl_extension{ProgramUniform,EXT,direct_state_access} | @ref AbstractShaderProgram::setUniform() diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index c53b07b91..8ab0ea12b 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -39,9 +39,10 @@ namespace Implementation { struct TextureState; } /** @brief Base for textures -Encapsulates one OpenGL texture object. See @ref Texture, @ref CubeMapTexture -and @ref CubeMapTextureArray documentation for more information and usage -examples. +Encapsulates one OpenGL texture object. See @ref Texture, @ref TextureArray, +@ref CubeMapTexture, @ref CubeMapTextureArray, @ref RectangleTexture, +@ref BufferTexture and @ref MultisampleTexture documentation for more +information and usage examples. @section AbstractTexture-webgl-restrictions WebGL restrictions diff --git a/src/Magnum/BufferTexture.h b/src/Magnum/BufferTexture.h index a8a891d26..a91d85879 100644 --- a/src/Magnum/BufferTexture.h +++ b/src/Magnum/BufferTexture.h @@ -154,9 +154,8 @@ enum class BufferTextureFormat: GLenum { /** @brief %Buffer texture -This texture is, unlike classic textures such as @ref Texture or -@ref CubeMapTexture, used as simple data source, without any unnecessary -interpolation and wrapping methods. +This texture is, unlike classic textures such as @ref Texture used as simple +data source, without any unnecessary interpolation and wrapping methods. @section BufferTexture-usage Usage @@ -195,7 +194,7 @@ functions use DSA to avoid unnecessary calls to @fn_gl{ActiveTexture} and and respective function documentation for more information. @see @ref Texture, @ref TextureArray, @ref CubeMapTexture, - @ref CubeMapTextureArray, @ref MultisampleTexture, @ref RectangleTexture + @ref CubeMapTextureArray, @ref RectangleTexture, @ref MultisampleTexture @requires_gl31 %Extension @extension{ARB,texture_buffer_object} @requires_gl Texture buffers are not available in OpenGL ES. */ diff --git a/src/Magnum/CubeMapTexture.h b/src/Magnum/CubeMapTexture.h index 53948a598..2714e8970 100644 --- a/src/Magnum/CubeMapTexture.h +++ b/src/Magnum/CubeMapTexture.h @@ -76,7 +76,8 @@ which intersects one of the six sides of the cube map. See @ref AbstractShaderProgram for more information about usage in shaders. @see @ref Renderer::Feature::SeamlessCubeMapTexture, @ref CubeMapTextureArray, - @ref Texture, @ref BufferTexture + @ref Texture, @ref TextureArray, @ref RectangleTexture, @ref BufferTexture, + @ref MultisampleTexture */ class CubeMapTexture: public AbstractTexture { public: diff --git a/src/Magnum/CubeMapTextureArray.h b/src/Magnum/CubeMapTextureArray.h index 0461818e5..8529886bd 100644 --- a/src/Magnum/CubeMapTextureArray.h +++ b/src/Magnum/CubeMapTextureArray.h @@ -45,6 +45,8 @@ See @ref CubeMapTexture documentation for introduction. @section CubeMapTextureArray-usage Usage +See @ref Texture documentation for introduction. + Common usage is to specify each layer and face separately using @ref setSubImage(). You have to allocate the memory for all layers and faces first by calling @ref setStorage(). Example: array with 4 layers of cube maps, each cube map @@ -75,7 +77,8 @@ the six sides of the cube map, fourth part is layer in the array. See @ref AbstractShaderProgram for more information about usage in shaders. @see @ref Renderer::Feature::SeamlessCubeMapTexture, @ref CubeMapTexture, - @ref Texture, @ref BufferTexture + @ref Texture, @ref TextureArray, @ref RectangleTexture, @ref BufferTexture, + @ref MultisampleTexture @requires_gl40 %Extension @extension{ARB,texture_cube_map_array} @requires_gl Cube map texture arrays are not available in OpenGL ES. */ @@ -93,13 +96,7 @@ class CubeMapTextureArray: public AbstractTexture { * @brief Set base mip level * @return Reference to self (for method chaining) * - * Taken into account when generating mipmap using @ref generateMipmap() - * and when considering texture completeness when using mipmap - * filtering. Initial value is `0`. - * @see @ref setMaxLevel(), @ref setMinificationFilter(), - * @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_BASE_LEVEL} + * See @ref Texture::setBaseLevel() for more information. */ CubeMapTextureArray& setBaseLevel(Int level) { AbstractTexture::setBaseLevel(level); @@ -110,14 +107,7 @@ class CubeMapTextureArray: public AbstractTexture { * @brief Set max mip level * @return Reference to self (for method chaining) * - * Taken into account when generating mipmap using @ref generateMipmap() - * and when considering texture completeness when using mipmap - * filtering. Initial value is `1000`, which is clamped to count of - * levels specified when using @ref setStorage(). - * @see @ref setBaseLevel(), @ref setMinificationFilter(), - * @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_MAX_LEVEL} + * See @ref Texture::setMaxLevel() for more information. */ CubeMapTextureArray& setMaxLevel(Int level) { AbstractTexture::setMaxLevel(level); @@ -142,19 +132,37 @@ class CubeMapTextureArray: public AbstractTexture { return *this; } - /** @copydoc RectangleTexture::setBorderColor(const Color4&) */ + /** + * @brief Set border color + * @return Reference to self (for method chaining) + * + * See @ref Texture::setBorderColor(const Color4&) for more + * information. + */ CubeMapTextureArray& setBorderColor(const Color4& color) { AbstractTexture::setBorderColor(color); return *this; } - /** @copydoc RectangleTexture::setBorderColor(const Vector4ui&) */ + /** + * @brief Set border color for integer texture + * @return Reference to self (for method chaining) + * + * See @ref Texture::setBorderColor(const Vector4ui&) for more + * information. + */ CubeMapTextureArray& setBorderColor(const Vector4ui& color) { AbstractTexture::setBorderColor(color); return *this; } - /** @copydoc RectangleTexture::setBorderColor(const Vector4i&) */ + /** + * @brief Set border color for integer texture + * @return Reference to self (for method chaining) + * + * See @ref Texture::setBorderColor(const Vector4i&) for more + * information. + */ CubeMapTextureArray& setBorderColor(const Vector4i& color) { AbstractTexture::setBorderColor(color); return *this; diff --git a/src/Magnum/MultisampleTexture.h b/src/Magnum/MultisampleTexture.h index 05d54a2c3..1d3a9549f 100644 --- a/src/Magnum/MultisampleTexture.h +++ b/src/Magnum/MultisampleTexture.h @@ -57,22 +57,29 @@ enum class MultisampleTextureSampleLocations: GLboolean { /** @brief Mulitsample texture -Template class for 2D mulitsample texture and 2D multisample texture array. See +Template class for 2D mulitsample texture and 2D multisample texture array. +Used only from shaders for manual multisample resolve and other operations. See also @ref AbstractTexture documentation for more information. -@todoc Finish when fully implemented +@section Texture-usage Usage + +As multisample textures have no sampler state, the only thing you need is to +set storage: +@code +MultisampleTexture2D texture; +texture.setStorage(16, TextureFormat::RGBA8, {1024, 1024}); +@endcode In shader, the texture is used via `sampler2DMS`/`sampler2DMSArray`, `isampler2DMS`/`isampler2DMSArray` or `usampler2DMS`/`usampler2DMSArray`. See @ref AbstractShaderProgram documentation for more information about usage in shaders. +@see @ref MultisampleTexture2D, @ref MultisampleTexture2DArray, @ref Texture, + @ref TextureArray, @ref CubeMapTexture, @ref CubeMapTextureArray, + @ref RectangleTexture, @ref BufferTexture @requires_gl32 %Extension @extension{ARB,texture_multisample} @requires_gl Multisample textures are not available in OpenGL ES. - -@see @ref MultisampleTexture2D, @ref MultisampleTexture2DArray, @ref Texture, - @ref TextureArray, @ref BufferTexture, @ref CubeMapTexture, - @ref CubeMapTextureArray, @ref RectangleTexture */ template class MultisampleTexture: public AbstractTexture { public: diff --git a/src/Magnum/RectangleTexture.h b/src/Magnum/RectangleTexture.h index 1e4b5ba35..3fbeefbe4 100644 --- a/src/Magnum/RectangleTexture.h +++ b/src/Magnum/RectangleTexture.h @@ -63,11 +63,10 @@ In shader, the texture is used via sampler2DRect`, `sampler2DRectShadow`, `isampler2DRect` or `usampler2DRect`. See @ref AbstractShaderProgram documentation for more information about usage in shaders. +@see @ref Texture, @ref TextureArray, @ref CubeMapTexture, + @ref CubeMapTextureArray, @ref BufferTexture, @ref MultisampleTexture @requires_gl31 %Extension @extension{ARB,texture_rectangle} @requires_gl Rectangle textures are not available in OpenGL ES. - -@see @ref Texture, @ref TextureArray, @ref BufferTexture, @ref CubeMapTexture, - @ref CubeMapTextureArray, @ref MultisampleTexture */ class RectangleTexture: public AbstractTexture { public: @@ -88,8 +87,9 @@ class RectangleTexture: public AbstractTexture { * texture size. If @extension{EXT,direct_state_access} is not * available, the texture is bound to some texture unit before the * operation. Initial value is @ref Sampler::Filter::Linear. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} + * @see @ref setMagnificationFilter(), @fn_gl{ActiveTexture}, + * @fn_gl{BindTexture} and @fn_gl{TexParameter} or + * @fn_gl_extension{TextureParameter,EXT,direct_state_access} * with @def_gl{TEXTURE_MIN_FILTER} */ RectangleTexture& setMinificationFilter(Sampler::Filter filter) { @@ -109,7 +109,7 @@ class RectangleTexture: public AbstractTexture { * The result is not cached in any way. If * @extension{EXT,direct_state_access} is not available, the texture * is bound to some texture unit before the operation. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and + * @see @ref image(), @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and * @fn_gl{GetTexLevelParameter} or @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} * with @def_gl{TEXTURE_WIDTH} and @def_gl{TEXTURE_HEIGHT} */ @@ -120,16 +120,17 @@ class RectangleTexture: public AbstractTexture { * @param wrapping Wrapping type for all texture dimensions * @return Reference to self (for method chaining) * - * Sets wrapping type for coordinates out of (0, textureSizeInGivenDirection-1) + * Sets wrapping type for coordinates out of @f$ [ 0, size - 1 ] @f$ * range. If @extension{EXT,direct_state_access} is not available, the * texture is bound to some texture unit before the operation. Initial * value is @ref Sampler::Wrapping::ClampToEdge. * @attention Only @ref Sampler::Wrapping::ClampToEdge and * @ref Sampler::Wrapping::ClampToBorder is supported on this * texture type. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_WRAP_S}, @def_gl{TEXTURE_WRAP_T}, + * @see @ref setBorderColor(), @fn_gl{ActiveTexture}, + * @fn_gl{BindTexture} and @fn_gl{TexParameter} or + * @fn_gl_extension{TextureParameter,EXT,direct_state_access} with + * @def_gl{TEXTURE_WRAP_S}, @def_gl{TEXTURE_WRAP_T}, * @def_gl{TEXTURE_WRAP_R} */ RectangleTexture& setWrapping(const Array2D& wrapping) { @@ -141,13 +142,8 @@ class RectangleTexture: public AbstractTexture { * @brief Set border color * @return Reference to self (for method chaining) * - * Border color when wrapping is set to @ref Sampler::Wrapping::ClampToBorder. - * If @extension{EXT,direct_state_access} is not available, the texture - * is bound to some texture unit before the operation. Initial value is - * `{0.0f, 0.0f, 0.0f, 0.0f}`. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_BORDER_COLOR} + * See @ref Texture::setBorderColor(const Color4&) for more + * information. */ RectangleTexture& setBorderColor(const Color4& color) { AbstractTexture::setBorderColor(color); @@ -158,22 +154,20 @@ class RectangleTexture: public AbstractTexture { * @brief Set border color for integer texture * @return Reference to self (for method chaining) * - * Border color for integer textures when wrapping is set to - * @ref Sampler::Wrapping::ClampToBorder. If @extension{EXT,direct_state_access} - * is not available, the texture is bound to some texture unit before - * the operation. Initial value is `{0, 0, 0, 0}`. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_BORDER_COLOR} - * @requires_gl30 %Extension @extension{EXT,texture_integer} + * See @ref Texture::setBorderColor(const Vector4ui&) for more + * information. */ RectangleTexture& setBorderColor(const Vector4ui& color) { AbstractTexture::setBorderColor(color); return *this; } - /** @overload - * @requires_gl30 %Extension @extension{EXT,texture_integer} + /** + * @brief Set border color for integer texture + * @return Reference to self (for method chaining) + * + * See @ref Texture::setBorderColor(const Vector4i&) for more + * information. */ RectangleTexture& setBorderColor(const Vector4i& color) { AbstractTexture::setBorderColor(color); diff --git a/src/Magnum/Texture.h b/src/Magnum/Texture.h index 5c387d941..0c278b022 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -90,13 +90,12 @@ In shader, the texture is used via `sampler1D`/`sampler2D`/`sampler3D`, See @ref AbstractShaderProgram documentation for more information about usage in shaders. +@see @ref Texture1D, @ref Texture2D, @ref Texture3D, @ref TextureArray, + @ref CubeMapTexture, @ref CubeMapTextureArray, @ref RectangleTexture, + @ref BufferTexture, @ref MultisampleTexture @requires_gles30 %Extension @es_extension{OES,texture_3D} for 3D textures in OpenGL ES 2.0 @requires_gl 1D textures are not available in OpenGL ES, only 2D and 3D ones. - -@see @ref Texture1D, @ref Texture2D, @ref Texture3D, @ref TextureArray, - @ref BufferTexture, @ref CubeMapTexture, @ref CubeMapTextureArray, - @ref MultisampleTexture, @ref RectangleTexture */ template class Texture: public AbstractTexture { public: @@ -176,7 +175,7 @@ template class Texture: public AbstractTexture { * The result is not cached in any way. If * @extension{EXT,direct_state_access} is not available, the texture * is bound to some texture unit before the operation. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and + * @see @ref image(), @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and * @fn_gl{GetTexLevelParameter} or @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} * with @def_gl{TEXTURE_WIDTH}, @def_gl{TEXTURE_HEIGHT} or * @def_gl{TEXTURE_DEPTH} @@ -241,8 +240,9 @@ template class Texture: public AbstractTexture { * available, the texture is bound to some texture unit before the * operation. Initial value is {@ref Sampler::Filter::Nearest, * @ref Sampler::Mipmap::Linear}. - * @see @ref setBaseLevel(), @ref setMaxLevel(), @fn_gl{ActiveTexture}, - * @fn_gl{BindTexture} and @fn_gl{TexParameter} or + * @see @ref setMagnificationFilter(), @ref setBaseLevel(), + * @ref setMaxLevel(), @fn_gl{ActiveTexture}, @fn_gl{BindTexture} + * and @fn_gl{TexParameter} or * @fn_gl_extension{TextureParameter,EXT,direct_state_access} with * @def_gl{TEXTURE_MIN_FILTER} */ @@ -260,9 +260,10 @@ template class Texture: public AbstractTexture { * texture size. If @extension{EXT,direct_state_access} is not * available, the texture is bound to some texture unit before the * operation. Initial value is @ref Sampler::Filter::Linear. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_MAG_FILTER} + * @see @ref setMinificationFilter(), @fn_gl{ActiveTexture}, + * @fn_gl{BindTexture} and @fn_gl{TexParameter} or + * @fn_gl_extension{TextureParameter,EXT,direct_state_access} with + * @def_gl{TEXTURE_MAG_FILTER} */ Texture& setMagnificationFilter(Sampler::Filter filter) { AbstractTexture::setMagnificationFilter(filter); @@ -274,13 +275,14 @@ template class Texture: public AbstractTexture { * @param wrapping Wrapping type for all texture dimensions * @return Reference to self (for method chaining) * - * Sets wrapping type for coordinates out of range (0.0f, 1.0f). If - * @extension{EXT,direct_state_access} is not available, the texture is - * bound to some texture unit before the operation. Initial value is + * Sets wrapping type for coordinates out of range @f$ [ 0.0, 1.0 ] @f$. + * If @extension{EXT,direct_state_access} is not available, the texture + * is bound to some texture unit before the operation. Initial value is * @ref Sampler::Wrapping::Repeat. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_WRAP_S}, @def_gl{TEXTURE_WRAP_T}, + * @see @ref setBorderColor(), @fn_gl{ActiveTexture}, + * @fn_gl{BindTexture} and @fn_gl{TexParameter} or + * @fn_gl_extension{TextureParameter,EXT,direct_state_access} with + * @def_gl{TEXTURE_WRAP_S}, @def_gl{TEXTURE_WRAP_T}, * @def_gl{TEXTURE_WRAP_R} */ Texture& setWrapping(const Array& wrapping) { @@ -296,9 +298,10 @@ template class Texture: public AbstractTexture { * If @extension{EXT,direct_state_access} is not available, the texture * is bound to some texture unit before the operation. Initial value is * `{0.0f, 0.0f, 0.0f, 0.0f}`. - * @see @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and @fn_gl{TexParameter} - * or @fn_gl_extension{TextureParameter,EXT,direct_state_access} - * with @def_gl{TEXTURE_BORDER_COLOR} + * @see @ref setWrapping(), @fn_gl{ActiveTexture}, @fn_gl{BindTexture} + * and @fn_gl{TexParameter} or + * @fn_gl_extension{TextureParameter,EXT,direct_state_access} with + * @def_gl{TEXTURE_BORDER_COLOR} * @requires_es_extension %Extension @es_extension{NV,texture_border_clamp} */ Texture& setBorderColor(const Color4& color) { diff --git a/src/Magnum/TextureArray.h b/src/Magnum/TextureArray.h index 4327ff006..6e38ce3ac 100644 --- a/src/Magnum/TextureArray.h +++ b/src/Magnum/TextureArray.h @@ -84,13 +84,12 @@ In shader, the texture is used via `sampler1DArray`/`sampler2DArray`, or `usampler1DArray`/`usampler2DArray`. See @ref AbstractShaderProgram documentation for more information about usage in shaders. +@see @ref Texture1DArray, @ref Texture2DArray, @ref Texture, + @ref CubeMapTexture, @ref CubeMapTextureArray, @ref RectangleTexture, + @ref BufferTexture, @ref MultisampleTexture @requires_gl30 %Extension @extension{EXT,texture_array} @requires_gles30 %Array textures are not available in OpenGL ES 2.0. @requires_gl 1D array textures are not available in OpenGL ES, only 2D ones. - -@see @ref Texture1DArray, @ref Texture2DArray, @ref Texture, @ref BufferTexture, - @ref CubeMapTexture, @ref CubeMapTextureArray, @ref MultisampleTexture, - @ref RectangleTexture */ template class TextureArray: public AbstractTexture { public: