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 parameter of wglGetPixelFormatAttribivARB, wglGetPixelFormatAttribfvARB, and the and 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 parameter of wglCreatePbufferARB and returned in the value parameter of wglQueryPbufferARB when 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 in wglGetPixelFormatAttribivARB and 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 defines a 2D texture for the current 2D texture object. If the texture target is WGL_TEXTURE_RECTANGLE_NV, then defines a texture rectangle for the current texture rectangle object. If the texture target is WGL_TEXTURE_1D_ARB, then defines a 1D texture for the current 1D texture object. New State None Revision History None