Name

    OES_stencil1

Name Strings

    GL_OES_stencil1

Contact

    Aaftab Munshi (amunshi@ati.com)

Notice

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

IP Status

    None.

Status

    Ratified by the Khronos BOP, July 22, 2005.    

Version

    Last Modifed Date: July 18, 2005

Number

    OpenGL ES Extension #31    

Dependencies

    OpenGL ES 1.0 is required.

    OES_framebuffer_object is required

Overview

    This extension enables 1-bit stencil component as a valid
    render buffer storage format.

Issues

 
New Tokens

    Accepted by the <internalformat> parameter of RenderbufferStorageOES:

        STENCIL_INDEX1_OES                 0x8D46 

New Procedures and Functions

    None.

Errors

    None.

New State

    None.

Revision History

    7/18/2005    Aaftab Munshi    Created the extension
