Name

    CHROMIUM_request_extension

Name Strings

    GL_CHROMIUM_request_extension

Version

    Last Modifed Date: July 22, 2011

Dependencies

    OpenGL ES 2.0 is required.

Overview

    This extension is for WebGL only. In some implemenations of OpenGL ES 2.0,
    in particular the Chromium implementation, it is possible to create an
    OpenGL context and request that most extensions be disabled. From that
    point, this extension allows extensions to then be selectively enabled.

    WebGL requires the base OpenGL ES 2.0 with NO extensions. So for example,
    if an OpenGL ES 2.0 implemention exposed the extension OES_texture_npot, the
    WebGL implementation would have to make it appear as though that extension
    does not exist. For Chromium WebGL OpenGL contexts, Chromium requests a
    context with no extensions. It then queries which extensions exist. If
    OES_texture_npot does NOT exist then WebGL can decide to not do the extra
    work required to emulate it not existing.

    Subsequently, if the user calls
    WebGLRenderingContext.getExtension("WEBGL_texture_npot"), assuming such an
    extension exists, the WebGL implementation can call this extension to turn
    on OES_texture_npot. After calling RequestExtensionCHROMIUM you must call
    GetString(GL_EXTENSIONS) in order to find out if the extension was actually
    enabled.

    Note: This extension really has no meaning outside of WebGL. By default, all
    supported extensions are enabled.

Issues


New Tokens

    None

New Procedures and Functions

    RequestExtensionCHROMIUM(const GLchar *extension)

    <extension> is a null terminated string of the extension you wish to enable.
    For example "OES_texture_npot".

Errors

    None.

New State

    None.

Revision History

    7/22/2011    Documented the extension
