Name

    OES_stencil8

Name Strings

    GL_OES_stencil8

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

Dependencies

    OpenGL ES 1.0 is required.

    OES_framebuffer_object is required

Overview

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

Issues

 
New Tokens

    Accepted by the <internalformat> parameter of RenderbufferStorageOES:

        STENCIL_INDEX8_OES                 0x8D48 

New Procedures and Functions

    None.

Errors

    None.

New State

    None.

Revision History

    7/18/2005    Aaftab Munshi    Created the extension
