OES_single_precision

Name

OES_single_precision

Name Strings

GL_OES_single_precision

Contact

David Blythe (blythe 'at' bluevoid.com)

Notice

Copyright (c) 2003-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 ES 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

Ratified by the Khronos BOP, July 23, 2003.
Ratified by the Khronos BOP, Aug 5, 2004.

Version

Version 1, September 18, 2014

Number

OpenGL ES Extension #18 (formerly OpenGL Extension #293)

Dependencies

None
The extension is written against the OpenGL 1.3 Specification.

Overview

This extension adds commands with single-precision floating-point
parameters corresponding to the commands that only variants that
accept double-precision floating-point input.  This allows an
application to avoid using double-precision floating-point
data types.  New commands are added with an 'f' prefix.

IP Status

None

Issues

  • An alternative is to suggest platforms define GLfloat and GLdouble to be the same type, since it is unlikely that both single- and double-precision are required at the same time.

    Resolved: This might create additional confusion, so it is better to define new commands.

New Procedures and Functions

void DepthRangefOES(clampf n, clampf f);
void FrustumfOES(float l, float r, float b, float t, float n, float f);
void OrthofOES(float l, float r, float b, float t, float n, float f);

void ClipPlanefOES(enum plane, const float* equation);
void GetClipPlanefOES(enum plane, float* equation);

void glClearDepthfOES(clampf depth);

New Tokens

None

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

Section 2.10 Coordinate Transformations

  Revise to include 'f' suffix.
  Add alternate suffixed versions of DepthRange (2.10.1).
  Add alternate suffixed versions of Ortho and Frustum (2.10.2).

Section 2.11 Clipping

  Add alternate suffixed version of ClipPlane.

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

None

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

Section 4.2.3 Clearing the Buffers

  Add alternate suffixed version of ClearDepth.

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

None

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

None

Additions to Appendix A of the OpenGL 1.3 Specification (Invariance)

None

Additions to the AGL/GLX/WGL Specifications

None

Additions to the WGL Specification

None

Additions to the AGL Specification

None

Additions to Chapter 2 of the GLX 1.3 Specification (GLX Operation)

The data representation is client-side only.  The GLX layer
performs translation between float and double representations.

Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)

Additions to Chapter 4 of the GLX 1.3 Specification (Encoding on the X Byte Stream)

Additions to Chapter 5 of the GLX 1.3 Specification (Extending OpenGL)

Additions to Chapter 6 of the GLX 1.3 Specification (GLX Versions)

GLX Protocol

Five new GL rendering commands are added. The following commands
are sent to the server as part of a glXRender request:

    ClearDepthfOES
        2           8               rendering command length
        2           4308            rendering command opcode
        4           FLOAT32         z

    DepthRangefOES
        2           12              rendering command length
        2           4309            rendering command opcode
        4           FLOAT32         n
        4           FLOAT32         f

    FrustumfOES
        2           28              rendering command length
        2           4310            rendering command opcode
        4           FLOAT32         l
        4           FLOAT32         r
        4           FLOAT32         b
        4           FLOAT32         t
        4           FLOAT32         n
        4           FLOAT32         f

    OrthofOES
        2           28              rendering command length
        2           4311            rendering command opcode
        4           FLOAT32         l
        4           FLOAT32         r
        4           FLOAT32         b
        4           FLOAT32         t
        4           FLOAT32         n
        4           FLOAT32         f

    ClipPlanefOES
        2           24              rendering command length
        2           4312            rendering command opcode
        4           ENUM            plane
        4           FLOAT32         v[0]
        4           FLOAT32         v[1]
        4           FLOAT32         v[2]
        4           FLOAT32         v[3]


The remaining commands are non-rendering commands.  These commands are
sent separately (i.e., not as part of a glXRender or glXRenderLarge
request), using the glXVendorPrivateWithReply request:

    GetClipPlanefOES
        1           CARD8           opcode (X assigned)
        1           17              GLX opcode (glXVendorPrivateWithReply)
        2           4               request length
        4           1421            vendor specific opcode
        4           GLX_CONTEXT_TAG context tag
        4           ENUM            plane
      =>
        1           1               reply
        1                           unused
        2           CARD16          sequence number
        4           0               reply length
        4           FLOAT32         v[0]
        4           FLOAT32         v[1]
        4           FLOAT32         v[2]
        4           FLOAT32         v[3]
        8                           unused

Errors

None

New State

None

New Implementation Dependent State

None

Revision History

03/27/2003    0.1
    - First draft created.

07/08/2003    0.2
    - Delete unused Dependencies on section
    - Added extension number

07/09/2003    0.3
    - Added missing ClearDepthfOES
    - Removed '_'s from names.

07/22/2003    0.4
    - Added GLX protocol (Thomas Roell)

06/28/2004    0.5
    - Added ClipPlanef function (Aaftab Munshi)

04/22/2007    0.6
    - Fixed 'void void' typo (Jon Leech)

09/18/2014    1
    - Fixed 'clampd' type to 'clampf' in ClearDepthfOES (Bug 12656).