blob: d996d78d104896705518888604b46ff8ff1621c2 [file] [log] [blame]
Name
ATI_render_texture_rectangle
Name Strings
WGL_ATI_render_texture_rectangle
Contact
Rob Mace, ATI Research (mace 'at' ati.com)
Status
Complete.
Version
Last Modified Date: September 27, 2018
Revision: 3
Number
OpenGL Extension #532
Dependencies
OpenGL 1.1 is required.
WGL_ARB_render_texture is required.
GL_ARB_texture_rectangle or GL_EXT_texture_rectangle is required.
The extension is written against the OpenGL 1.5 Specification
and the WGL_ARB_render_texture 7/16/01 Specification.
Overview
This extension builds upon WGL_ARB_render_texture and allows a
pbuffer to be bound to a texture rectangle target.
Issues
1. Are separate BIND_TO_TEXTURE_RECTANGLE enums needed, or are the
BIND_TO_TEXTURE enums defined in WGL_ARB_render_texture
sufficient?
RESOLUTION: The BIND_TO_TEXTURE enums defined in
WGL_ARB_render_texture are sufficient. WGL_ARB_render_texture
does not have BIND_TO_TEXTURE_2D, BIND_TO_TEXTURE_CUBE_MAP, etc.
enums. It just has the BIND_TO_TEXTURE enums.
New Procedures and Functions
None
New Tokens
Accepted as a value in the <piAttribList> parameter of
wglCreatePbufferARB and returned in the value parameter of
wglQueryPbufferARB when <iAttribute> is WGL_TEXTURE_TARGET_ARB:
WGL_TEXTURE_RECTANGLE_ATI 0x21A5
Additions to Chapter 2 of the OpenGL 1.5 Specification (OpenGL
Operation)
None
Additions to Chapter 3 of the OpenGL 1.5 Specification (Rasterization)
None
Additions to Chapter 4 of the OpenGL 1.5 Specification (Per-Fragment
Operations and the Frame Buffer)
None
Additions to Chapter 5 of the OpenGL 1.5 Specification (Special
Functions)
None
Additions to Chapter 6 of the OpenGL 1.5 Specification (State and
State Requests)
None
Additions to the WGL Specification
Modify wglCreatePbufferARB:
HPBUFFERARB wglCreatePbufferARB (HDC hDC, int iPixelFormat,
int iWidth, int iHeight, const int *piAttribList);
...
WGL_TEXTURE_TARGET_ARB
This attribute indicates the target for the texture that will be
created when the pbuffer is created with a texture format of
WGL_TEXTURE_RGB_ARB or WGL_TEXTURE_RGBA_ARB. This attribute can
be set to WGL_NO_TEXTURE_ARB, WGL_TEXTURE_1D_ARB,
WGL_TEXTURE_2D_ARB, WGL_TEXTURE_CUBE_MAP_ARB, or
WGL_TEXTURE_RECTANGLE_ATI. The default value is
WGL_NO_TEXTURE_ARB.
...
WGL_PBUFFER_LARGEST_ARB
If this attribute is set to a non-zero value, the largest
available pbuffer is allocated when the allocation of the
pbuffer would otherwise fail due to insufficient resources. The
width or height of the allocated pbuffer never exceeds <iWidth>
and <iHeight>, respectively. Also, if the pbuffer will be used
as a texture (i.e., the value of the WGL_TEXTURE_TARGET_ARB
attribute is WGL_TEXTURE_1D_ARB, WGL_TEXTURE_2D_ARB,
WGL_TEXTURE_CUBE_MAP_ARB, or WGL_TEXTURE_RECTANGLE_ATI and
texture format is WGL_TEXTURE_RGB_ARB or WGL_TEXTURE_RGBA_ARB),
then the aspect ratio will be preserved and the new width and
height will be valid sizes for the corresponding texture target.
(e.g. Both the width and height will be a power of 2 if the
implementation only supports power of 2 textures. Similarly,
the width and height will be equal for a cube map texture). Use
wglQueryPbufferARB to retrieve the dimensions of the allocated
pbuffer. The default value for this attribute is FALSE.
...
ERROR_INVALID_DATA The pixel format attribute
WGL_TEXTURE_FORMAT_ARB is
WGL_TEXTURE_RGB_ARB or
WGL_TEXTURE_RGBA_ARB
and WGL_PBUFFER_WIDTH and/or
WGL_PBUFFER_HEIGHT specify an
invalid size for the implementation
(e.g., the texture size is not a
power of 2 and
WGL_TEXTURE_TARGET_ARB is
WGL_TEXTURE_1D_ARB,
WGL_TEXTURE_2D_ARB, or
WGL_TEXTURE_CUBE_MAP_ARB).
ERROR_INVALID_DATA WGL_TEXTURE_TARGET_ARB is
WGL_TEXTURE_RECTANGLE_ATI
and WGL_MIPMAP_TEXTURE_ARB is
non-zero.
....
Modify wglBindTexImageARB
The command
BOOL wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
defines a one-dimensional texture image, two-dimensional
texture image, rectangle texture image, or a set of
two-dimensional cube map texture images. The texture image or
images consist of the image data in <iBuffer> for the specified
pbuffer, <hPbuffer>, and need not be copied. The texture
target, the texture format and the size of the texture
components are derived from attributes of pbuffer specified by
<hPbuffer>.
...
The texture targets are derived from the WGL_TEXTURE_TARGET_ARB
attribute of <hPbuffer>. If the texture target for the pbuffer
is WGL_TEXTURE_CUBE_MAP_ARB then <iBuffer> defines a set of
cubemap images for the cube map texture objects which are bound
to the current context (hereafter referred to as the current
texture object). Note that when the texture target is
WGL_TEXTURE_CUBE_MAP_ARB, all cube map texture targets are
defined by a single call to wglBindTexImageARB. If the texture
target is WGL_TEXTURE_2D_ARB, then <iBuffer> defines a 2D
texture for the current 2D texture object. If the texture
target is WGL_TEXTURE_1D_ARB, then <iBuffer> defines a 1D
texture for the current 1D texture object. If the texture
target is WGL_TEXTURE_RECTANGLE_ATI, then <iBuffer> defines a
rectangle texture for the current rectangle texture object.
....
Errors
None
New State
None
New Implementation Dependent State
None
Revision History
Date: 09/27/2018
Revision: 3
- Assigned extension number & registered the spec (see
github.com/KhronosGroup/OpenGL-Registry/issues/192)
- For reasons lost to history, the enum value 0x21A5 duplicates the
entirely unrelated WGL_GPU_NUM_PIPES_AMD.
- This will probably set the alltime record for the time between an
extension being created and being registered.
Date: 10/11/2004
Revision: 2
- Minor cleanup.
- Changed status to Complete.
Date: 8/16/2004
Revision: 1
- First draft.