Name
EXT_texture_rectangle
Name Strings
GL_EXT_texture_rectangle
Contributors
Daniel Ginsburg
Mark J. Kilgard
Geoff Stahl
Contact
Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)
Geoff Stahl, Apple Computer (gstahl 'at' apple.com)
Notice
Copyright NVIDIA Corporation, 2000, 2001, 2002.
Status
Shipping (Implemented in Mac OS X version 10.1 and in NVIDIA's
Release 10 drivers.
Version
$Date: 2002/08/22 22:57:17 $ $Revision: 1.4 $
Number
XXX - Unknown
Dependencies
OpenGL 1.1 is required
ARB_mirrored_repeat affects the definition of this extension.
EXT_paletted_texture affects the definition of this extension.
EXT_texture_compression_s3tc affects the definition of this
extension.
This extension is written against the OpenGL 1.3 specification.
Overview
The EXT_texture_rectangle extension adds the ability to accept
borderless non-power of two (a.k.a., rectangular) textures by
means of a new texture target, TEXTURE_RECTANGLE_EXT, for two
dimensional texturing.
Textures using the TEXTURE_RECTANGLE_EXT texture target have
both different limitations and implementation specifics from
textures utilizing the GL_TEXTURE_2D, or other, target.
Issues
* Is mipmap filtering permitted?
Mipmap filtering is not permitted. Since this is the case the
default minification filter for TEXTURE_RECTANGLE_EXT targets is
GL_LINEAR.
* What texture wrap modes are allowed and what is the default
state?
Only the GL_CLAMP, GL_CLAMP_TO_EDGE, and CLAMP_TO_BORDER wrap
modes are allowed. CLAMP_TO_EDGE is the default state.
REPEAT and MIRRORED_REPEAT_ARB are not supported with the
TEXTURE_RECTANGLE_EXT texture target.
* Are texture borders supported?
Borders are not supported.
* Are paletted textures supported?
Paletted rectangular textures are not supported.
* What is the status of the use of texture compression in
conjunction with this extension?
While texture compression is not specifically precluded, certain
compression schemes are incompatible with rectangular textures thus
compressed internal textures formats, in general, are not supported
with this extension.
* How are rectangular textures enabled?
Rectangular textures are enabled by enabling the
TEXTURE_RECTANGLE_EXT texture target via Enable
(TEXTURE_RECTANGLE_EXT). This enable is prioritized above
TEXTURE_2D and below TEXTURE_3D.
* What texture target should be used?
The texture target TEXTURE_RECTANGLE_EXT should be used for
GetTexImage, GetTexLevelParameteriv, GetTexLevelParameterfv,
TexImage2D, CopyTexImage2D, TexSubImage2D, and CopySubTexImage2D
functions.
* How are texture coordinates addressed for rectangular textures?
Texture coordinates are addressed without being normalized from
[0..1], instead [0..w] and [0..h] are used, where w and h are width
and height of the texture respectively.
* How should applications determine the available maximum texture
dimensions available?
Implementation dependent rectangular texture size limitations are
queried using the MAX_RECTANGLE_TEXTURE_SIZE_EXT parameter and
may be different that standard texture size limits.
* How does the handling of the R texture component differ from
the handling of S and T?
The R texture coordinate for rectangular textures is handled as it
would be for standard two dimensional textures. Thus the
coordinates range from [0..1] and the wrapping mode is unchanged
from the default.
New Procedures and Functions
None
New Tokens
Accepted by the <cap> parameter of Enable, Disable and
IsEnabled; by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv and GetDoublev; and by the <target> parameter of
BindTexture, GetTexParameterfv, GetTexParameteriv,
TexParameterf, TexParameteri, TexParameterfv and TexParameteriv:
TEXTURE_RECTANGLE_EXT 0x84F5
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv and GetDoublev:
TEXTURE_BINDING_RECTANGLE_EXT 0x84F6
Accepted by the <target> parameter of GetTexLevelParameteriv,
GetTexLevelParameterfv, GetTexParameteriv and TexImage2D:
PROXY_TEXTURE_RECTANGLE_EXT 0x84F7
Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
GetIntegerv and GetFloatv:
MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8
Accepted by the <target> parameter of GetTexImage,
GetTexLevelParameteriv, GetTexLevelParameterfv, TexImage2D,
CopyTexImage2D, TexSubImage2D and CopySubTexImage2D:
TEXTURE_RECTANGLE_EXT
Additions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization)
These changes describe use of the TEXTURE_RECTANGLE_EXT texture
target, supported formats, texture dimensions, and texture proxies:
- (3.6.3, pg.84) "Pixel Transfer Modes" under "Color Table
Specification" or the ColorTableEXT description in the
EXT_paletted_texture specification
Add the following statement after paragraph 5 of the sub-section:
"The error INVALID_ENUM is generated if the target to ColorTable (or
ColorTableEXT or the various ColorTable and ColorTableEXT
alternative commands) is TEXTURE_RECTANGLE_EXT or
PROXY_TEXTURE_RECTANGLE_EXT."
- (3.6.5, pg. 106) "Pixel Transfer Operations" under "Convolution"
Change the first paragraph in this sub-section, 3rd sentence to
read:
"If CONVOLUTION_2D is enabled, the two-dimensional convolution
filter is applied only to the two-dimensional images passed to
DrawPixels, CopyPixels, ReadPixels, TexImage2D, TexSubImage2D,
CopyTexImage2D, CopyTexSubImage2D, and CopyTexSubImage3D, and
returned by GetTexImage with one of the targets TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_CUBE_MAP_POSITIVE_X,
TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
TEXTURE_CUBE_MAP_NEGATIVE_Z."
- (3.8.1, pg. 121) "Texture Image Specification"
Add a sentence to the middle of the 16th paragraph of the section
(third paragraph on the page), directly after "... for image arrays
of level 0 through k, where k is the log base 2 of
MAX_TEXTURE_SIZE." reading:
"The maximum allowable width of a rectangular texture image, and the
maximum allowable height of a rectangular texture image, must be at
least the implementation-dependent value of
MAX_RECTANGLE_TEXTURE_SIZE_EXT."
- (3.8.1, pg. 121) "Texture Image Specification"
In the 18th paragraph of this section (sixth paragraph on the page),
change the sentence following "The command void TexImage2D ... a
two-dimensional texture image." through the rest of the paragraph in
the section describing two-dimensional texturing to read:
"<target> must be one of TEXTURE_2D for a 2D texture, or one of
TEXTURE_RECTANGLE_EXT for a rectangle texture, or one of
TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z for a
cube map texture. Additionally, <target> may be either
PROXY_TEXTURE_2D for a 2D proxy texture, PROXY_TEXTURE_RECTANGLE_EXT
for a rectangle proxy texture or PROXY_TEXTURE_CUBE_MAP for a cube
map proxy texture as discussed in section 3.8.10. The other
parameters match the corresponding parameters of TexImage3D."
- (3.8.1, pg. 121) "Texture Image Specification"
Add 2 paragraphs following the above two-dimensional texturing
introduction, reading:
"Rectangular textures do not support paletted formats. The error
INVALID_ENUM is generated if the target is TEXTURE_RECTANGLE_EXT or
PROXY_TEXTURE_RECTANGLE_EXT and the format is COLOR_INDEX or the
internal format is COLOR_INDEX or one of the COLOR_INDEX<n>_EXT
internal formats."
When the target is TEXTURE_RECTANGLE_EXT, the INVALID_VALUE error is
generated if border is any value other than zero or the level is any
value other than zero. Also when the target is
TEXTURE_RECTANGLE_EXT, the texture dimension restrictions specified
by equations 3.11, 3.12, and 3.13 are ignored; however, if the width
is less than zero or the height is less than zero, the error
INVALID_VALUE is generated. In the case of a rectangular texture, ws
and hs equal the specified width and height respectively of the
rectangular texture image while ds is 1."
- (3.8.1, pg. 122) "Texture Image Specification"
Amend the second paragraph on the page to read:
"A 2D texture consists of a single 2D texture image. A rectangle
texture consists of a single 2D texture image. A cube map texture is
a set of six two-dimensional texture images. The six cube map
texture targets form a single cube map texture though each target
names a distinct face of the cube map. The TEXTURE CUBE MAP *
targets listed above update their appropriate cube map face 2D
texture image. Note that the six cube map two-dimensional image
tokens such as TEXTURE CUBE MAP POSITIVE X are used when specifying,
updating, or querying one of a cube map's six two-dimensional
images, but when enabling cube map texturing or binding to a cube
map texture object (that is when the cube map is accessed as a whole
as opposed to a particular two-dimensional image), the TEXTURE CUBE
MAP target is specified."
- (3.8.1, pg. 123) "Texture Image Specification"
Append to the end of the third to the last paragraph in the section:
"A rectangular texture array has depth dt=1, with height ht and
width wt defined by the specified image height and width
parameters."
- (3.8.2, pg. 125) "Alternate Texture Image Specification Commands"
Add TEXTURE_RECTANGLE_EXT to the target list of the second paragraph
of the section to say:
... "Currently, <target> must be TEXTURE_2D, TEXTURE_RECTANGLE_EXT,
TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z." ...
- (3.8.2, pg. 126) "Alternate Texture Image Specification Commands"
Add TEXTURE_RECTANGLE_EXT to the target list in the fourth paragraph
of the section to say:
... "Currently the target arguments of TexSubImage1D and
CopyTexSubImage1D must be TEXTURE_1D, the <target> arguments of
TexSubImage2D and CopyTexSubImage2D must be one of TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_CUBE_MAP_POSITIVE_X,
TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
TEXTURE_CUBE_MAP_NEGATIVE_Z, and the <target> arguments of
TexSubImage3D and CopyTexSubImage3D must be TEXTURE_3D." ...
Also append to the end of this paragraph:
"If target is TEXTURE_RECTANGLE_EXT and level is not zero, the error
INVALID_VALUE is generated."
- (3.8.3, pg. 129) "Compressed Texture Images"
Add the following paragraph after the second paragraph in the
section, which introduces the CompressedTexImage<n>DARB commands:
"The error INVALID_ENUM is generated if the target parameter to one
of the CompressedTexImage<n>DARB commands is TEXTURE_RECTANGLE_EXT."
Add the following paragraph after introducing the
CompressedTexSubImage<n>DARB commands: "The error INVALID_ENUM is
generated if the target parameter to one of the
CompressedTexSubImage<n>DARB commands is TEXTURE_RECTANGLE_EXT."
- (3.8.4, pg. 132) "Texture Parameters"
Add TEXTURE_RECTANGLE_EXT to paragraph one to say:
... "<target> is the target, either TEXTURE_1D, TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or TEXTURE_CUBE_MAP." ...
- (3.8.4, pg. 133) "Texture Parameters"
Add the following paragraph to the end of the section after Table
3.19:
"Certain texture parameter values may not be specified for textures
with a target of TEXTURE_RECTANGLE_EXT. The error INVALID_ENUM is
generated if the target is TEXTURE_RECTANGLE_EXT and the
TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_WRAP_R parameter is set
to REPEAT or MIRRORED_REPEAT_ARB. The error INVALID_ENUM is
generated if the target is TEXTURE_RECTANGLE_EXT and the
TEXTURE_MIN_FILTER is set to a value other than NEAREST or LINEAR
(no mipmap filtering is permitted). The error INVALID_ENUM is
generated if the target is TEXTURE_RECTANGLE_EXT and
TEXTURE_BASE_LEVEL is set to any value other than zero."
- (3.8.5, pg. 135) "Texture Wrap Modes"
Add this final additional paragraph after Table 3.20:
"Texture coordinates are clamped differently for rectangular
textures. The r texture coordinate is wrapped as described above.
When the texture target is TEXTURE_RECTANGLE_EXT, the s and t
coordinates are wrapped as follows: CLAMP causes the s coordinate to
be clamped to the range [0, ws]. CLAMP causes the t coordinate to be
clamped to the range [0, hs]. CLAMP_TO_EDGE causes the s coordinate
to be clamped to the range [0.5, ws-0.5]. CLAMP_TO_EDGE causes the t
coordinate to be clamped to the range [0.5, hs - 0.5].
CLAMP_TO_BORDER causes the s coordinate to be clamped to the range
[-0.5, ws + 0.5]. CLAMP_TO_BORDER causes the t coordinate to be
clamped to the range [-0.5, hs + 0.5]."
- (3.8.7, pg. 136) "Texture Minification"
Under the "Scale Factor and Level of Detail" sub-section, change the
fourth paragraph in the subsection to read:
"For non-rectangular textures, let u(x,y) = 2^n * s(x, y), v(x, y) =
2^m * t(x, y), and w(x, y) = 2^l * r(x, y), where n, m, and l are
defined by equations 3.11, 3.12, and 3.13 with ws, hs, and ds equal
to the width, height, and depth of the image array whose level is
TEXTURE_BASE_LEVEL. However, for rectangular textures let u(x, y) =
s(x, y), v(x, y) = t(x, y), and w(x, y) = r(x, y)."
- (3.8.7, pg. 137 and 138) "Texture Minification"
Update the last sentence in the third paragraph on the page to read:
"Depending on whether the texture's target is rectangular or
non-rectangular, this means the texel at location (i,j,k) becomes
the texture value, with i given by
/ floor (u), s < 1
|
i = | 2^n - 1, s == 1, non-rectangular texture (3.17)
|
\ ws - 1, s == 1, rectangular texture
(Recall that if TEXTURE_WRAP_S is REPEAT, then 0 <= s < 1.)
Similarly, j is found as
/ floor(v), t < 1
|
j = | 2^m - 1, t == 1, non-rectangular texture (3.18)
|
\ hs - 1, t == 1, rectangular texture
and k is found as
/ floor (w), r < 1
|
k = | 2^l - 1, r == 1, non-rectangular texture (3.19)
|
\ 0, r == 1, rectangular texture"
- (3.8.7, pg. 138) "Texture Minification"
Change the last sentence in the first paragraph on the page,
directly after equation 3.19 to read:
"For a two-dimensional or rectangular texture, k is irrelevant; the
texel at location (i,j) becomes the texture value."
- (3.8.7, pg. 139) "Texture Minification"
Change the sentence preceding equation 3.20:
"For a two-dimensional or rectangular texture,"
- (3.8.7, pg. 140) "Texture Minification"
Follow the first full paragraph on the page which ends with "...
must be defined, as discussed in section 3.8.9." with:
"Rectangular textures do not support mipmapping (it is an error to
specify a minification filter that requires mipmapping)."
- (3.8.10, pg. 143) "Texture State and Proxy State"
Change the first sentence of the first paragraph to say:
"The state necessary for texture can be divided into two categories.
First, there are the ten sets of mipmap arrays (one each for the
one-, two-, and three-dimensional texture targets, one for the
rectangular texture target (though the rectangular texture target
has only one mipmap level), and six for the cube map texture
targets) and their number." ...
- (3.8.10, pg. 143) "Texture State and Proxy State"
Change the fourth and third to last sentences of the first paragraph
to say:
"In the initial state, the value assigned to TEXTURE_MIN_FILTER is
NEAREST_MIPMAP_LINEAR, except for rectangular textures where the
initial value is LINEAR, and the value for TEXTURE_MAG_FILTER is
LINEAR. s, t, and r warp modes are all set to REPEAT, except for
rectangular textures where the initial value is CLAMP_TO_EDGE."
- (3.8.10, pg. 143) "Texture State and Proxy State"
Change the second paragraph of the section to say:
"In addition to the one-, two-, three-dimensional, rectangular, and
the six cube map sets of image arrays, the partially instantiated
one-, two-, and three-dimensional, rectangular, and one cube map
sets of proxy image arrays are maintained." ...
- (3.8.10, pg. 144) "Texture State and Proxy State"
Change the third paragraph to:
"One- and two-dimensional and rectangular proxy arrays are operated
on in the same way when TexImage1D is executed with target specified
as PROXY_TEXTURE_1D, or TexImage2D is executed with target specified
as PROXY_TEXTURE_2D or PROXY_TEXTURE_RECTANGLE_EXT."
- (3.8.10, pg. 144) "Texture State and Proxy State"
Change the second sentence of the fifth paragraph of the section to:
"Therefore PROXY_TEXTURE_1D, PROXY_TEXTURE_2D,
PROXY_TEXTURE_RECTANGLE_EXT, PROXY_TEXTURE_3D, and
PROXY_TEXTURE_CUBE_MAP cannot be used as textures, and their images
must never be queried using GetTexImage." ...
- (3.8.11, pg. 144) "Texture Objects"
Change the first sentence of the first paragraph to say:
"In addition to the default textures TEXTURE_1D, TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_3D, and TEXTURE_CUBE_MAP, named
one-dimensional, two-dimensional, rectangular, and three-dimensional
texture objects and cube map texture objects can be created and
operated on." ...
- (3.8.11, pg. 144) "Texture Objects"
Change the second paragraph in the section to say:
"A texture object is created by binding an unused name to
TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or
TEXTURE_CUBE_MAP." ... "If the new texture object is bound to
TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or
TEXTURE_CUBE_MAP, it remains a one-dimensional, two-dimensional,
rectangular, three-dimensional, or cube map texture until it is
deleted."
- (3.8.11, pg. 144) "Texture Objects"
Change the third paragraph (page 133) to say:
"BindTexture may also be used to bind an existing texture object to
either TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or
TEXTURE_CUBE_MAP."
- (3.8.11, pg. 145) "Texture Objects"
Change paragraph five of the section to say:
"In the initial state, TEXTURE_1D, TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_3D, and TEXTURE_CUBE_MAP have
one-dimensional, two-dimensional, rectangular, three-dimensional,
and cube map state vectors associated with them respectively." ...
"The initial, one-dimensional, two-dimensional, rectangular,
three-dimensional, and cube map texture is therefore operated upon,
queried, and applied as TEXTURE_1D, TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_3D, and TEXTURE_CUBE_MAP respectively
while 0 is bound to the corresponding targets."
- (3.8.11, pg. 145) "Texture Objects"
Change paragraph six of the section to say:
... "If a texture that is currently bound to one of the targets
TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or
TEXTURE_CUBE_MAP is deleted, it is as though BindTexture has been
executed with the same <target> and <texture> zero." ...
- (3.8.13 pg. ) "Texture Application"
Replace the beginning sentences of the first paragraph with:
"Texturing is enabled or disabled using the generic Enable and
Disable commands, respectively, with the symbolic constants
TEXTURE_1D, TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or
TEXTURE_CUBE_MAP to enable the one-dimensional, two-dimensional,
rectangular, three-dimensional, or cube map texturing respectively.
If both two- and one-dimensional textures are enabled, the
two-dimensional texture is used. If the rectangular and either of
the two- or one-dimensional textures is enabled, the rectangular
texture is used. If the three-dimensional and any of the
rectangular, two-dimensional, or one-dimensional textures is
enabled, the three-dimensional texture is used. If the cube map
texture and any of the three-dimensional, rectangular,
two-dimensional, or one-dimensional textures is enabled, then cube
map texturing is used.
Additions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment
Operations and the Framebuffer)
None
Additions to Chapter 5 of the OpenGL 1.3 Specification (Special
Functions)
- (5.4, pg. 195) "Display Lists"
In the second to last paragraph of the section, add
PROXY_TEXTURE_RECTANGLE_EXT to the list of PROXY_* tokens.
Additions to Chapter 6 of the OpenGL 1.3 Specification (State and State
Requests)
- (6.1.3, pg. 199) "Enumerated Queries"
Change the fourth paragraph to say:
"The GetTexParameter parameter <target> may be one of TEXTURE_1D,
TEXTURE_2D, TEXTURE_RECTANGLE_EXT, TEXTURE_3D, or TEXTURE_CUBE_MAP,
indicating the currently bound one-dimensional, two-dimensional,
rectangular, three-dimensional, or cube map texture object. For
GetTexLevelParameter, <target> may be one of TEXTURE_1D, TEXTURE_2D,
TEXTURE_RECTANGLE_EXT, TEXTURE_3D, TEXTURE_CUBE_MAP_POSITIVE_X,
TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z,
TEXTURE_CUBE_MAP_NEGATIVE_Z, PROXY_TEXTURE_1D, PROXY_TEXTURE_2D,
PROXY_TEXTURE_RECTANGLE_EXT, PROXY_TEXTURE_3D, or
PROXY_TEXTURE_CUBE_MAP, indicating the one-dimensional texture
object, two-dimensional texture object, rectangular texture object,
three-dimensional texture object, or one of the six distinct 2D
images making up the cube map texture object or one-dimensional,
two-dimensional, rectangular, three-dimensional, or cube map proxy
state vector. Note that TEXTURE_CUBE_MAP is not a valid <target>
parameter for GetTexLevelParameter because it does not specify a
particular cube map face."
- (6.1.4, pg. 201) "Texture Queries"
Change the first paragraph to read:
... "It is somewhat different from the other get commands; <tex> is
a symbolic value indicating which texture (or texture face in the
case of a cube map texture target name) is to be obtained.
TEXTURE_1D indicates a one-dimensional texture, TEXTURE_2D indicates
a two-dimensional texture, TEXTURE_RECTANGLE_EXT indicates a
rectangular texture, TEXTURE_3D indicates a three-dimensional
texture, and TEXTURE_CUBE_MAP_POSITIVE_X,
TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, and
TEXTURE_CUBE_MAP_NEGATIVE_Z indicate the respective face of a cube
map texture."
- (6.1.4, pg. 201) "Texture Queries"
Add a final sentence to the fourth paragraph of the section,
immediately after ... "or DEPTH COMPONENT causes the error INVALID
ENUM.":
"Calling GetTexImage with a lod not zero when the tex is
TEXTURE_RECTANGLE_EXT causes the error INVALID_VALUE."
Additions to the GLX Specification
None
GLX Protocol
None
Dependencies on ARB_mirrored_repeat
If ARB_mirrored_repeat is not supported, references to the
MIRRORED_REPEAT_ARB wrap mode in this document should be ignored.
Dependencies on EXT_paletted_texture
If EXT_paletted_texture is not supported, references to the
COLOR_INDEX, COLOR_INDEX<n>_EXT, ColorTable, and ColorTableEXT
should be ignored.
Dependencies on EXT_texture_compression_s3tc
If EXT_texture_compression_s3tc is not supported, references
to CompressedTexImage2DARB and CompressedTexSubImageARB and the
COMPRESSED_*_S3TC_DXT*_EXT enumerants should be ignored.
Errors
INVALID_ENUM is generated when ColorTable (or ColorTableEXT or the
various ColorTable and ColorTableEXT alternative commands) is called
and the target is TEXTURE_RECTANGLE_EXT or
PROXY_TEXTURE_RECTANGLE_EXT.
INVALID_ENUM is generated when TexImage2D is called and the target
is TEXTURE_RECTANGLE_EXT or PROXY_TEXTURE_RECTANGLE_EXT and the
format is COLOR_INDEX or the internalformat is COLOR_INDEX or one of
the COLOR_INDEX<n>_EXT internal formats.
INVALID_VALUE is generated when TexImage2D is called when the target
is TEXTURE_RECTANGLE_EXT if border is any value other than zero or
the level is any value other than zero.
INVALID_VALUE is generated when TexImage2D is called when the target
is TEXTURE_RECTANGLE_EXT if the width is less than zero or the
height is less than zero.
INVALID_VALUE is generated when TexSubImage2D or CopyTexSubImage2D
is called when the target is TEXTURE_RECTANGLE_EXT if the level is
any value other than zero.
INVALID_ENUM is generated when one of the CompressedTexImage<n>DARB
commands is called when the target parameter is
TEXTURE_RECTANGLE_EXT.
INVALID_ENUM is generated when one of the
CompressedTexSubImage<n>DARB commands is called when the target
parameter is TEXTURE_RECTANGLE_EXT.
INVALID_ENUM is generated when TexParameter is called with a target
of TEXTURE_RECTANGLE_EXT and the TEXTURE_WRAP_S, TEXTURE_WRAP_T, or
TEXTURE_WRAP_R parameter is set to REPEAT or MIRRORED_REPEAT_ARB.
INVALID_ENUM is generated when TexParameter is called with a target
of TEXTURE_RECTANGLE_EXT and the TEXTURE_MIN_FILTER is set to a
value other than NEAREST or LINEAR.
INVALID_VALUE is generated when TexParameter is called with a target
of TEXTURE_RECTANGLE_EXT and the TEXTURE_BASE_LEVEL is set to any
value other than zero.
INVALID_VALUE is generated when GetTexImage is called with a lod not
zero when the tex is TEXTURE_RECTANGLE_EXT.
New State
- (Table 6.14, Texture Objects, pg. 222) amend/add the following entries:
Get Value Type Get Command Initial Value Description Sec Attribute
---------------------------- ---- ----------- ------------- -------------------- ------ --------------
TEXTURE_RECTANGULAR_EXT B IsEnabled False True if rectangular 3.8.10 texture/enable
texturing is enabled
TEXTURE_BINDING_RECTANGLE_EXT Z+ GetIntegerv 0 Texture object 3.8.8 texture
for TEXTURE_CUBE_MAP
TEXTURE_RECTANGLE_EXT I GetTexImage see 3.8 rectangular texture 3.8 -
image for lod 0
- (Table 6.16, Texture Objects (cont.), pg. 224) amend/add the following entries:
Get Value Type Get Command Initial Value Description Sec Attribute
------------------ ----- -------------- -------------- ------------------- ----- --------------
TEXTURE_MIN_FILTER n x Z6 GetTexParameter See 3.8 except Texture minification 3.8.7 texture
for rectangular function
which is
LINEAR
TEXTURE_WRAP_S n x Z4 GetTexParameter REPEAT except Texture wrap mode S 3.8 texture
for rectangular
which is
CLAMP_TO_EDGE
TEXTURE_WRAP_T n x Z4 GetTexParameter REPEAT except Texture wrap mode T 3.8 texture
for rectangular
which is
CLAMP_TO_EDGE
TEXTURE_WRAP_R n x Z4 GetTexParameter REPEAT except Texture wrap mode R 3.8 texture
for rectangular
which is
CLAMP_TO_EDGE
New Implementation Dependent State
- (Table 6.27, Implementation Dependent Values, pg. 235) add the following entry:
Get Value Type Get Command Minimum Value Description Sec Attribute
-------- ---- ----------- ------------- ----------- ----- --------------
MAX_RECTANGLE_TEXTURE_SIZE_EXT Z+ GetIntegerv 64 Maximum rectangular 3.8.1 -
texture image
dimension
Backwards Compatibility
This extension is semantically equivalent to NV_texture_rectangle
replaces it. The tokens, and name strings now refer to EXT instead
of NV. Enumerant values are unchanged.
Revision History
None
|