Name

    ARB_texture_buffer_object_rgb32

Name Strings

    GL_ARB_texture_buffer_object_rgb32

Contact

    Jeff Bolz, NVIDIA Corporation (jbolz 'at' nvidia.com)

Contributors

    Barthold Lichtenbelt, NVIDIA
    Bill Licea-Kane, AMD
    Graham Sellers, AMD
    Greg Roth, NVIDIA
    Nick Haemel, AMD
    Pat Brown, NVIDIA
    Pierre Boudier, AMD
    Piers Daniell, NVIDIA

Notice

    Copyright (c) 2010-2013 The Khronos Group Inc. Copyright terms at
        http://www.khronos.org/registry/speccopyright.html

Status

    Complete. Approved by the ARB at the 2010/01/22 F2F meeting.
    Approved by the Khronos Board of Promoters on March 10, 2010.

Version

    Last Modified Date:         December 7, 2009
    Revision:                   2

Number

    ARB Extension #92

Dependencies

    This extension is written against the OpenGL 3.2 specification (Core 
    Profile).

Overview

    This extension adds three new buffer texture formats - RGB32F, RGB32I, 
    and RGB32UI.  This partially addresses one of the limitations of buffer 
    textures in the original EXT_texture_buffer_object extension and in 
    OpenGL 3.1, which provide no support for three-component formats.

IP Status

    No known IP claims.

New Procedures and Functions

    None

New Tokens

    None

Additions to Chapter 2 of the OpenGL 3.2 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the OpenGL 3.2 Specification (Rasterization)

    Add to Table 3.15 "Internal formats for buffer textures", p.158

    Sized Internal Format   Base Type   Components  Norm    Component
                                                             0 1 2 3    
    ---------------------   ---------   ----------  ----    ---------
    RGB32F                  float       3           No       R G B 1
    RGB32I                  int         3           No       R G B 1
    RGB32UI                 uint        3           No       R G B 1

Additions to Chapter 4 of the OpenGL 3.2 Specification (Per-Fragment Operations
and the Frame Buffer)

    None

Additions to Chapter 5 of the OpenGL 3.2 Specification (Special Functions)

    None

Additions to Chapter 6 of the OpenGL 3.2 Specification (State and
State Requests)

    None

Additions to the AGL/GLX/WGL Specifications

    None

Errors

    None

New State

    None

New Implementation Dependent State

    None

Issues

    None

Revision History

    Rev.    Date    Author    Changes
    ----  --------  --------  -----------------------------------------
    2     12/07/09  jbolz     Rename EXT->ARB.
    1               jbolz     Internal revisions.

