GL_OES_texture_border_clamp#
Supported Hardware#
Series6, Series6XE, Series6XT
Valid APIs#
OpenGL ES 2.0, OpenGL ES 3.x
Description#
When sampling from a texture, if the requested UV coordinates reference a place outside of the texture, a wrapping behaviour is needed to specify what happens. OpenGL ES has three strategies depending on version:
OpenGL ES 2.0 allows either clamping the UVs to the edge of the texture or wrapping around to the start of the valid range.
OpenGL ES 3.0 added mirrored repeat, which acts as if the texture was flipped each time it wraps the coordinates.
This extension adds an additional behaviour - returning an application-defined border colour. This allows a shader to draw a texture to the screen with a dedicated border colour if so desired. It also gives the shader a cheap way to detect that a UV coordinate has gone out of range, without complex shader logic.
Registry Link#
https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt
Example#
// Set the texture's border colour to opaque red
// Red Green Blue Alpha
GLfloat borderColour[] = {1.0f, 0.0f, 0.0f, 1.0f};
glBindTexture(GL_TEXTURE_2D, texture)
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR_OES, borderColour);
// Set the texture to use the border clamp wrapping mode.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER_OES);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER_OES);