blob: a22ee0c2d33a2f4c944625c1b92639892443b483 [file] [log] [blame]
Name
NV_render_texture_rectangle
Name Strings
WGL_NV_render_texture_rectangle
Contact
Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)
Notice
Copyright NVIDIA Corporation, 2001, 2002.
Status
Shipping, March 2002.
Version
Last Modified Date: 2003/01/08
NVIDIA Revision: 7
Number
264
Dependencies
OpenGL 1.1 is required.
WGL_ARB_render_texture is required.
GL_NV_texture_rectangle is required.
The extension is written against the OpenGL 1.2.1 Specification.
Overview
This extension allows a color buffer with non-power-of-two dimensions to
be used for both rendering and texturing. It is built upon the
ARB_render_texture extension; the only addition in this extension is the
ability to bind a texture to a texture rectangle target, as provided
through the NV_texture_rectangle extension.
Issues
What is the interaction of this spec and the WGL_MIPMAP_TEXTURE_ARB
attribute?
RESOLVED: NV_texture_rectangle doesn't support mipmaps, so it's kind of
stupid to allocate them. Trying will result in an error.
Should there be separate pixel format attributes for
BIND_TO_TEXTURE_RECTANGLE_RGB and RGBA? Or is a simple
BIND_TO_TEXTURE_RECTANGLE attribute sufficient?
RESOLVED: Separate capabilities. There may be pixel formats where
rendered texture rectangles are supported, but conventional textures are
not. If a single BIND_TO_TEXTURE_RECTANGLE attribute were used, there
would be no cue for RGB/RGBA binding support, and the existing
attributes would signal the ability to render to conventional textures.
Alternately, pixel formats could be constrained so that the only
render-texture capable formats are those that support all allowable
targets.
Implementation Notes
None.
New Procedures and Functions
None.
New Tokens
Accepted by the <piAttributes> parameter of wglGetPixelFormatAttribivARB,
wglGetPixelFormatAttribfvARB, and the <piAttribIList> and <pfAttribIList>
parameters of wglChoosePixelFormatARB:
WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
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_NV 0x20A2
Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation)
None.
Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
None.
Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment
Operations and the Frame Buffer)
None.
Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
None.
Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State
Requests)
None.
Additions to the WGL Specification
First, close your eyes and pretend that a WGL specification actually
existed. Maybe if we all concentrate hard enough, one will magically
appear.
These modifications are relative to the ARB_render_texture spec.
Add to the description of <piAttributes> in wglGetPixelFormatAttribivARB
and <pfAttributes> in wglGetPixelFormatfv:
WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV
WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV
True if the color buffers can be bound as RGB/RGBA textures using the
texture rectangle target. Currently only pbuffers can be bound as
textures so this attribute will only be TRUE if WGL_DRAW_TO_PBUFFER is
also TRUE. It is possible to bind a RGBA visual to a RGB texture in
which case the values in the alpha component of the visual are ignored
when the color buffer is used as a RGB texture.
Add new table entries to match criteria in description of
wglChoosePixelFormatARB:
Attribute Type Match Criteria
WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV boolean exact
WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV boolean exact
Modify wglCreatePbufferARB:
The following attributes are supported by wglCreatePbufferARB:
...
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 other than
WGL_NO_TEXTURE_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_NV. The default value is WGL_NO_TEXTURE_ARB.
(Modify power-of-two error for wglCreatePbufferARB)
ERROR_INVALID_DATA The pixel format attribute
WGL_TEXTURE_TARGET_ARB is WGL_TEXTURE_1D_ARB,
WGL_TEXTURE_2D_ARB, or
WGL_TEXTURE_CUBE_MAP_ARB, and WGL_PBUFFER_WIDTH
and/or WGL_PBUFFER_HEIGHT is not a power of
two.
(Add new wglCreatePbufferARB error)
ERROR_INVALID_DATA WGL_TEXTURE_TARGET_ARB is
WGL_TEXTURE_RECTANGLE_NV
and WGL_MIPMAP_TEXTURE_ARB is non-zero.
(Add wglCreatePbufferARB errors missing from the ARB_render_texture spec)
ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_RGB_NV,
WGL_TEXTURE_TARGET_ARB is
WGL_TEXTURE_RECTANGLE_NV, and the
WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV attribute
is not set in the pixel format.
ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_RGB_NV,
WGL_TEXTURE_TARGET_ARB is not
WGL_TEXTURE_RECTANGLE_NV, and the
WGL_BIND_TO_TEXTURE_RGB_NV attribute is not set
in the pixel format.
ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_RGBA_NV,
WGL_TEXTURE_TARGET_ARB is
WGL_TEXTURE_RECTANGLE_NV, and the
WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV attribute
is not set in the pixel format.
ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_RGBA_NV,
WGL_TEXTURE_TARGET_ARB is not
WGL_TEXTURE_RECTANGLE_NV, and the
WGL_BIND_TO_TEXTURE_RGBA_NV attribute is not
set in the pixel format.
Modify wglBindTexImageARB (only adding verbiage for supporting texture
rectangles):
The command
BOOL wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer)
defines a one-dimensional texture image, a two-dimensional
texture image, a two-dimensional texture rectangle image, or a set of
two-dimensional cube map texture images...
The texture targets are derived... 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_RECTANGLE_NV, then <iBuffer> defines a texture rectangle
for the current texture rectangle object. If the texture target is
WGL_TEXTURE_1D_ARB, then <iBuffer> defines a 1D texture for the
current 1D texture object.
New State
None
Revision History
None