text: Name
  
      ARB_half_float_vertex
  
  Name Strings
  
      GL_ARB_half_float_vertex
  
  Contact
  
      Daniel Koch, TransGaming, Inc (daniel 'at' transgaming.com)
  
  Notice
  
      Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at
          http://www.khronos.org/registry/speccopyright.html
  
  Specification Update Policy
  
      Khronos-approved extension specifications are updated in response to
      issues and bugs prioritized by the Khronos OpenGL Working Group. For
      extensions which have been promoted to a core Specification, fixes will
      first appear in the latest version of that core Specification, and will
      eventually be backported to the extension document. This policy is
      described in more detail at
          https://www.khronos.org/registry/OpenGL/docs/update_policy.php
  
  Status
  
      Approved by the ARB on July 11, 2008
  
  Version
  
      Last Modified Date:   August 7, 2008
      Version               5
  
  Number
  
      ARB Extension #48
  
  Dependencies
  
      This extension is written against the OpenGL 2.1 Specification
  
      Based on the NV_half_float and OES_vertex_half_float extensions.
  
  Overview
  
      This extension extends the usage of the half-precision (16-bit) floating-
      point quantities introduced in ARB_half_float_pixel for usage in specifying
      vertex array data.
  
      This extension allows applications to use half-precision floating point data
      when specifying vertices.  This can allow applications to reduce their
      memory footprint, as well as the memory bandwidth required for vertex data.
  
      This extension extends the existing vertex array commands to accept the new
      data type.
  
  
  Issues
  
      1. How is this extension different from NV_half_float or
         ARB_half_float_pixel?
  
      This extension adds the commands for specifying half-precision
      vertex data that were initially introduced in the NV_half_float
      extension but were specifically excluded from the
      ARB_half_float_pixel extension. The functionality added in this
      extension is a proper subset of the vertex functionality defined in
      the NV_half_float extension.
  
      2. Should we provide immediate-mode entry points for half-precision
      vertex data?
  
      No. We expect the immediate-mode API to be deprecated in the near
      future and thus do not wish to encumber implementors with adding a
      significant number of additional entry points that would have
      limited usefulness. Additionaly, the half-precision floating point
      vertex data is only interesting when it is specified in array format
      (i.e., for saving storage space). If an application is using
      immediate mode APIs to load the vertex data, it does not seem overly
      onerous to require them to convert to one of the more standard data
      types.
  
      3. What is the half-precision floating point format?
  
      This is the same 16-bit floating point format that is defined in
      Section 2.1.2 of the ARB_texture_float and ARB_half_float_pixel
      extensions.
  
      4. How does this extension differ from OES_vertex_half_float?
  
      It is intended to have the same functionality, however there are a
      few minor changes spec-wise:
  
       a) this extension defines the additional GLX protocol, as was done
          in the NV_half_float extension.
       b) this extension uses the value of the HALF_FLOAT_ARB (0x140B)
          token that is already defined in the desktop version of the
          ARB_half_float_pixel extension (which is the same as the value
          of the HALF_FLOAT_NV token from the NV_half_float extension).
          The OES_vertex_half_float and OES_texture_half_float extensions
          use the HALF_FLOAT_OES (0x8D61) token.
  
      The logical progression is to define this as an ARB extension which
      is intended to supersede both the OES extension and the
      functionality from NV_half_float.
  
      5. Why don't the new tokens and entry points in this extension have
         "ARB" suffixes like other ARB extensions?
  
      RESOLVED: Unlike a normal ARB extension, this is a strict subset of
      functionality already approved in OpenGL 3.0. This extension exists
      only to support that functionality on older hardware that cannot
      implement a full OpenGL 3.0 driver. Since there are no possible
      behavior changes between the ARB extension and core features, source
      code compatibility is improved by not using suffixes on the
      extension.
  
  New Procedures and Functions
  
      None
  
  New Tokens
  
      Accepted by the <type> argument of VertexPointer, NormalPointer,
      ColorPointer, SecondaryColorPointer, FogCoordPointer, TexCoordPointer,
      and VertexAttribPointer:
  
      HALF_FLOAT                                       0x140B
  
  Additions to Chapter 2 of the OpenGL 2.1 Specification (OpenGL Operation)
  
      Modify Section 2.8, Vertex Arrays, p. 23
  
      (Modify 1st paragraph on p. 24) ... For <type>, the values BYTE, SHORT,
      INT, FLOAT, HALF_FLOAT, and DOUBLE indicate types byte, short, int,
      float, half, and double, respectively. ...
  
      (Modify Table 2.4, p. 25)
  
          Command                   Sizes      Types
          ------------------        -------    ---------------------------------
          VertexPointer             2,3,4      short, int, float, half, double
          NormalPointer             3          byte, short, int, float, half,
                                               double
          ColorPointer              3,4        byte, ubyte, short, ushort, int,
                                               uint, float, half, double
          SecondaryColorPointer     3          byte, ubyte, short, ushort, int,
                                               uint, float, half, double
          IndexPointer              1          ubyte, short, int, float, double
          FogCoordPointer           1          float, half, double
          TexCoordPointer           1,2,3,4    short, int, float, half, double
          EdgeFlagPointer           1          boolean
          VertexAttribPointer       1          byte, ubyte, short, ushort, int,
                                               uint, float, half, double
  
          Table 2.4: Vertex array sizes (values per vertex) and data types.
  
      Modify Section 2.13, Colors and Coloring, p.44
  
      (Modify Table 2.6, p. 59)  Add new row to the table:
  
           GL Type    Conversion
           -------    ----------
           half          c
  
  
  Additions to Chapter 3 of the OpenGL 2.1 Specification (Rasterization)
  
      None.
  
  
  Additions to Chapter 4 of the OpenGL 2.1 Specification (Per-Fragment
  Operations and the Framebuffer)
  
      None.
  
  
  Additions to Chapter 5 of the OpenGL 2.1 Specification (Special Functions)
  
      None.
  
  Additions to Chapter 6 of the OpenGL 2.1 Specification (State and
  State Requests)
  
      None.
  
  Additions to the AGL/GLX/WGL Specifications
  
      None.
  
  GLX Protocol (Modification to the GLX 1.3 Protocol Encoding Specification)
  
      Add to Section 1.4 (p.2), Common Types
  
          FLOAT16     A 16-bit floating-point value in the format specified
                      in the ARB_half_float_pixel extension specification.
  
      Modify Section 2.3.4, GL Rendering Commands That May Be Large (p. 127)
  
       (Modify the ARRAY_INFO portion of the DrawArrays encoding (p.129) to
        reflect the new data type supported by vertex arrays.)
  
           ARRAY_INFO
  
              4       enum                    data type
                      0x1400   i=1            BYTE
                      0x1401   i=1            UNSIGNED_BYTE
                      0x1402   i=2            SHORT
                      ...
                      0x140B   i=2            HALF_FLOAT
              4       INT32                   j
              4       ENUM                    array type
                  ...
  
  Errors
  
      None
  
  New State
  
      None
  
  New Implementation Dependent State
  
      None
  
  Revision History
  
      Rev.    Date    Author    Changes
      ----  -------- ---------  --------------------------------------------
        1   1/22/08  dgkoch     Initial version based on the NV_half_float
                                and ARB_half_float_pixel specification. Updated
                                to reference OpenGL 2.1 spec.
        2   1/22/08  dgkoch     Made some grammatical clarifications.
        3   2/01/08  dgkoch     Clarify dependencies and interactions with other
                                extensions.
        4   2/25/08  dgkoch     Add issue #4.
        5   8/07/08  jleech     Remove _ARB suffix.
  
  