Name

    OES_stencil4

Name Strings

    GL_OES_stencil4

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 #32    

Dependencies

    OpenGL ES 1.0 is required.

    OES_framebuffer_object is required

Overview

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

Issues

 
New Tokens

    Accepted by the <internalformat> parameter of RenderbufferStorageOES:

        STENCIL_INDEX4_OES                 0x8D47 

New Procedures and Functions

    None.

Errors

    None.

New State

    None.

Revision History

    7/18/2005    Aaftab Munshi    Created the extension
