Back to the OpenGL extension cross reference

WGL_NV_render_texture_rectangle


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:  $Date: 2003/01/08 $
NVIDIA Revision: $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

Implementation Support


   List of OpenGL implementations supporting the WGL_NV_render_texture_rectangle extension

Original File


   Original text file for the WGL_NV_render_texture_rectangle extension


Page generated on Sun Nov 20 18:39:44 2005