OpenGL ES is a royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems, including consoles, phones, appliances, and vehicles. It consists of well-defined subsets of desktop OpenGL, creating a flexible and powerful low-level interface between software and graphics acceleration. OpenGL ES 2.X and OpenGL ES 3.X enables full programmable 3D graphics.
NVIDIA DRIVE® product supports the OpenGL ES 2 and 3 specifications, which you can find at the below locations.
- Note
- OpenGL ES 3 support is preliminary, pending passage of official conformance tests, which have not yet been released by Khronos.
Click the HERE links below to view the document bundled here with this release, or click the URL link to go to the latest version on the Web.
- Note
- The new extension documents included in this package (included HERE with no URL link), rather than being linked from Khronos, have not passed a final review and may change before the final release.
- Attention
- Some NVIDIA DRIVE® releases support a subset of the extensions documented here. To ensure your release supports a given extension, you must query the driver. For example, the following code snippet determines whether the driver supports the
GL_EXT_texture_filter_anisotropic
OpenGL ES extension: The following example determines whether the GL_EXT_texture_filter_anisotropic
OpenGL extension is available.
// Create an OpenGL or OpenGL ES context before you
// call this function.
extensionString = (const char*)glGetString(GL_EXTENSIONS);
if (strstr(extensionString,
"GL_EXT_texture_filter_anisotropic")) {
// The extension is available. Do something with it.
}
else {
// The extension is not available.
// Use a workaround that produces results that are similar
// to the OpenGL ES extension.
}
OpenGL ES 3.2
- OpenGL ES Common Profile Specification Version 3.2 (August 10, 2015)
- OpenGL ES Shading Language Language Version: 3.20 Specifiecation (August 26, 2015)
- OpenGL ES 3.2 Online Manual Pages
OpenGL ES 3.1
- OpenGL ES Common Profile Specification Version 3.1 (March 17, 2013)
- OpenGL ES Shading Language Language Version: 3.10 Specifiecation (March 17, 2014)
- OpenGL ES 3.1 Online Manual Pages
OpenGL ES 3.0
- OpenGL ES Common Profile Specification Version 3.0.3 (December 18, 2013)
- OpenGL ES Common Shading Language 3.00.4 Specification (March 6, 2013)
- OpenGL ES 3.0 Online Manual Pages
OpenGL ES 2.0
- OpenGL ES Common Profile Specification Version 2.0.25 (November 2, 2010)
- OpenGL ES Shading Language 1.0.17 Specification (May 12, 2009)
- OpenGL ES 2.0 Online Manual Pages
Implementation Notes
The eglCreateContext
function automatically promotes requests for an OpenGL ES 2 or 3 context to an OpenGL ES 3.1 one. OpenGL ES 3 is backward compatible with OpenGL ES 2.
Some OpenGL ES 2 extensions supported on Tegra 3 family of processors are now part of the core OpenGL ES 3.1 specification. Instead of using these extensions, use the core functionality available in the specification. For more information, see the "OpenGL ES Porting Guide" topic in the "Graphics Guide" chapter in the Development Guide.
There are some OpenGL ES 2.0 extensions that are supported on the NVIDIA® Tegra® 3 family of processors that are unsupported on the NVIDIA® Tegra® K1 (32 Bit) family of processors. For a list of those unsupported extensions and work-around advice, see the "OpenGL ES Porting Guide" topic in the "Graphics Guide" chapter in the Development Guide.
- Note
- Because OpenGL ES documentation on some extensions is currently unavailable, some documentation links take you to OpenGL documentation. Those extensions are indicated with a note below. Support for those extensions is very similar to that defined in the full OpenGL documentation for those extensions, with appropriate limitations for OpenGL ES.
OpenGL ES Extensions
The OpenGL ES driver in this release supports the following OpenGL ES extensions.
- Note
- The new extension documents included in this package (included HERE with no URL link), rather than being linked from Khronos, have not passed a final review and may change before the final release.
- URL GL_AND_extension_pack_es31a — Rolls up the 20 extensions it requires, allowing applications to check for all of them at one, and enable all of their shading language features with a single extension statement.
- URL GL_EXT_blend_minmax — Adds 2 new equations that produce the minimum (or maximum) color components of the source and destination colors.
- HERE GL_EXT_buffer_storage (proposed) — Introduces the concept of persistent client mappings of buffer objects. With such mappings, clients can: (a) retain pointers to a buffer's data store returned as the result of a mapping; and (b) issue drawing commands while those mappings are in place.
- HERE GL_EXT_copy_image — Enables efficient image data transfer between image objects (i.e., textures and renderbuffers).
HERE GL_EXT_draw_buffers_indexed — Provides the ability to independently, per color output:
- enable or disable blending,
- set the blend equations,
- set the blend functions, and
- set the color write masks
- See also
- GL_OES_draw_buffers_indexed
- HERE GL_EXT_geometry_shader — Defines a new shader type available to be run on the GPU, called a geometry shader.
- See also
- GL_OES_geometry_shader
- HERE GL_EXT_gpu_shader5 — Provides a set of new features to the OpenGL ES Shading Language and related APIs to support capabilities of new GPUs, extending the capabilities of version 3.10 of the OpenGL ES Shading Language.
- See also
- GL_OES_gpu_shader5
- HERE GL_EXT_shader_implicit_conversions — Provides support for implicitly converting signed integer types to unsigned types, as well as more general implicit conversion and function overloading infrastructure to support new data types introduced by other extensions.
- HERE GL_EXT_shader_io_blocks — Provides support for application defined interface blocks which are used for passing application-specific information between shader stages.
- See also
- GL_OES_shader_io_blocks
- HERE GL_EXT_tessellation_shader — Introduces new tessellation stages and two new shader types to the OpenGL ES primitive processing pipeline.
- See also
- GL_OES_tessellation_shader
- HERE GL_EXT_texture_border_clamp — Defines an additional texture clamping algorithm. CLAMP_TO_BORDER_EXT clamps texture coordinates at all mipmap levels such that NEAREST and LINEAR filters of clamped coordinates return only the constant border color.
- See also
- GL_OES_texture_border_clamp
- HERE GL_EXT_texture_buffer — Enables efficient image data transfer between image objects (i.e., textures and renderbuffers).
- See also
- GL_OES_texture_buffer
- HERE GL_EXT_texture_cube_map_array — Expands texture array support to include cube map textures.
- See also
- GL_OES_texture_cube_map_array
- HERE GL_EXT_texture_view — Allows a texture's data store to be "viewed" in multiple ways, either reinterpreting the data format/type as a different format/type with the same element size, or by clamping the mipmap level range or array slice range.
- See also
- GL_OES_texture_view
- TBD GL_EXT_base_instance — Allows the offset within buffer objects used for instanced rendering to be specified.
- URL GL_EXT_color_buffer_float — Allows rendering to floating point buffers via FBO.
- URL GL_EXT_color_buffer_half_float — Allows rendering to 16-bit floating point buffers via FBO.
- URL GL_EXT_debug_label — Adds mechanism to tag objects (tex, buf, shaders) with a string for debugging.
- URL GL_EXT_disjoint_timer_query — Provides a query mechanism that can be used to determine the amount of time it takes to fully complete a set of GL commands without stalling the rendering pipeline.
- URL GL_EXT_frag_depth — Allows setting fragment depth from within a fragment shader.
- URL GL_EXT_geometry_point_size — Defines a new shader type available to be run on the GPU, called a geometry shader.
- See also
- GL_OES_geometry_point_size
- URL GL_EXT_map_buffer_range — Modify ranges of buffer objects instead of entirety for better performance.
- URL GL_EXT_multi_draw_indirect — Invokes multiple draws from a single procedure call.
- URL GL_EXT_occlusion_query_boolean — Query a boolean value if any fragment samples were written.
- URL GL_EXT_primitive_bounding_box — Provides a way for implementations to know which tiles incoming geometry will intersect before fully transforming (and expanding) the geometry.
- URL GL_EXT_render_snorm — Enables signed normalized texture and render buffer formats to be color-renderable.
- URL GL_EXT_separate_shader_objects — Allows mix and match frag and vert shaders instead of using monolithic programs.
- URL GL_EXT_shader_integer_mix — Extends GLSL mix() function to select between integer values.
- URL GL_EXT_shader_texture_lod — Adds additional texture functions to the OpenGL ES Shading Language that provide the shader writer with explicit control of LOD.
- URL GL_EXT_shadow_samplers — Adds GLSL sampler type suitable for implementing shadow maps.
- HERE GL_EXT_sparse_texture — Allows the separation of the graphics processor's address space (reservation) from the requirement that all textures must be physically backed (commitment).
- URL GL_EXT_sRGB — Provides sRGB color spaces for textures, framebuffers, and renderbuffers.
- URL GL_EXT_sRGB_write_control — Allows an application the ability to decide if the conversion from linear space to sRGB is necessary.
- URL GL_EXT_tessellation_point_size — Introduces new tessellation stages and two new shader types to the OpenGL ES primitive processing pipeline.
- See also
- GL_OES_tessellation_point_size
- URL GL_EXT_texture_compression_dxt1 — Support DXT1 compressed texture formats.
- URL GL_EXT_texture_compression_s3tc — Support S3TC compressed texture formats.
- URL GL_EXT_texture_filter_anisotropic — Specifies degree of anisotropy for texture filtering.
- URL GL_EXT_texture_format_BGRA8888 — Adds BGRA texture formats.
- URL GL_EXT_texture_rg — Adds R and RG texture formats.
- URL GL_EXT_texture_sRGB_decode — Allows sampling from sRGB texture without linear conversion.
- URL GL_EXT_texture_storage — Provides functions for specifying all levels of a texture at once.
- URL GL_EXT_unpack_subimage — Provides a mechanism to unpack pixel sub-rectangles to textures from a larger image in host-memory.
- URL GL_KHR_blend_equation_advanced — Adds a number of "advanced" blending equations that can be used to perform new color blending operations, many of which are more complex than the standard blend modes provided by unextended OpenGL.
- URL GL_KHR_blend_equation_advanced[_coherent] — Provides additional "advanced" blending equations.
- URL GL_KHR_context_flush_control — WGL and GLX extensions add new context creation parameters to allow an application to specify the behavior that is desired when a context is made non-current, and specifically to opt out of the implicit flush behavior. This GL extension allows querying the context flush behavior.
- URL GL_KHR_debug — Functions to provide GL application extra debugging information.
- URL GL_KHR_robust_buffer_access_behavior — Specifies the behavior of out-of-bounds buffer and array accesses.
- URL GL_KHR_robustness — Provides interfaces to help prevent buffer overruns and respond to graphics resets.
- URL GL_KHR_texture_compression_astc_ldr — Support ASTC compressed textures with low dynamic range.
- URL GL_NV_bgr — Adds support for BGR texture formats.
- URL GL_NV_bindless_texture — Allows shaders to access textures without first binding to a fixed set of texture image units. Note: This link takes you to an OpenGL document. OpenGL ES documentation for this extension is not currently available.
- URL GL_NV_blend_equation_advanced — Adds new blend equations.
- URL GL_NV_blend_equation_advanced_coherent — Adds defined behavior when using advanced blend equations with overlapping primitives per draw call.
- HERE GL_NV_conditional_render — Provides support for conditional rendering based on the results of an occlusion query.
- URL GL_NV_copy_buffer — Provides mechanism for fast copy between buffer objects.
- URL GL_NV_copy_image — Allows copying data between textures and renderbuffers. Note: This link takes you to an OpenGL document. OpenGL ES documentation for this extension is not currently available.
- URL GL_NV_draw_buffers — Allows multiple FBO color buffer attachments for output.
- URL GL_NV_draw_instanced — Provides draw calls to render multiple instances of same geometry.
- URL GL_NV_draw_texture — Easily draw simple screen-aligned textured rectangle with pass-through shader.
- URL GL_NV_EGL_stream_consumer_external — Streams image frames into a GL texture.
- URL GL_NV_explicit_attrib_location — Allows application to define attribute bind locations in GLSL shaders.
- URL GL_NV_fbo_color_attachments — Increases number of available FBO color attachment points.
- URL GL_NV_framebuffer_blit — Adds independent READ and DRAW framebuffer object bind points and function to copy from READ to DRAW objects.
- URL GL_NV_framebuffer_multisample — Provides downsample blit from MS FBO to a single sampled FBO.
- URL GL_NV_generate_mipmap_sRGB — Allows generation of mipmaps for sRGB textures.
- TBD GL_NV_image_formats — Introduces the texture image formats missing for parity with OpenGL 4.4.
- URL GL_NV_instanced_arrays — Extends NV_draw_instanced to use vertex array attributes as a source of instance data.
- URL GL_NV_internalformat_sample_query — Introduces a mechanism for reporting format properties that may dependenD on the number of samples when multisampling is enabled.
- URL GL_NV_non_square_matrices — Adds support for non-square matrix variables in GLSL shaders.
- URL GL_NV_occlusion_query_samples — Generalized occlusion query with sample count rather than only boolean.
- URL GL_NV_pack_subimage — Provides a mechanism to pack pixel sub-rectangles to a larger image in host-memory.
- URL GL_NV_packed_float — Provides R11F_G11F_B10F textures.
- URL GL_NV_packed_float_linear — New floating point texture format with 3 positive float values packed into 32-bits.
- URL GL_NV_path_rendering — Adds a new rendering paradigm, known as path rendering, for rendering filled and stroked paths. Note: This link takes you to an OpenGL document. OpenGL ES documentation for this extension is not currently available.
- URL GL_NV_pixel_buffer_object — Allows buffer objects to be used for pixel reads and writes.
- HERE GL_NV_polygon_mode — Adds a PolygonModeNV entrypoint that can be used to change the polygon rasterization method.
- URL GL_NV_read_buffer — Provides non-default color buffer support for ReadPixels, as with NV_draw_buffers.
- URL GL_NV_read_depth — Provides depth buffer support for ReadPixels.
- URL GL_NV_read_depth_stencil — Provides packed depth-stencil buffer support for ReadPixels.
- URL GL_NV_read_stencil — Provides stencil buffer support for ReadPixels.
- HERE GL_NV_shader_noperspective_interpolation — Adds support for noperspective interpolation to OpenGL ES.
- URL GL_NV_shadow_samplers_array — Provides GLSL sampler for shadow 2D array textures.
- TBD GL_NV_secure_context — Creates a secure GL context. Specification not yet available on Khronos.
- URL GL_NV_shadow_samplers_cube — Provides GLSL sampler for shadow cube map textures.
- URL GL_NV_sRGB_formats — Adds new compressed and uncompressed sRGB color texture formats.
- URL GL_NV_texture_array — Provides 2D array textures.
- URL GL_NV_texture_border_clamp — Adds clamp to border color wrap mode for texture sampling.
- URL GL_NV_texture_compression_latc — Adds Luminance Alpha Texture Compression compressed formats.
- URL GL_NV_texture_compression_s3tc — Support S3TC compressed texture formats.
- URL GL_NV_texture_compression_s3tc_update — Updates compressed textures from uncompressed data.
- URL GL_NV_timer_query — Provides mechanism to time GPU draw calls without relying on glFinish().
- TBD GL_NV_viewport_array — Enhances OpenGL by providing a mechanism to expose multiple viewports.
- HERE GL_OES_texture_border_clamp — Defines an additional texture clamping algorithm.
CLAMP_TO_BORDER_EXT
clamps texture coordinates at all mipmap levels such that NEAREST and LINEAR filters of clamped coordinates return only the constant border color.
- URL GL_OES_compressed_ETC1_RGB8_texture — Adds Ericsson Texture Compression compressed formats.
- URL GL_OES_copy_image — Enables efficient image data transfer between image objects.
- URL GL_OES_depth24 — Enables 24-bit depth components as a render buffer storage format.
- URL GL_OES_depth32 — Enables 32-bit depth components as a render buffer storage format.
- URL GL_OES_depth_texture — Adds depth component texture formats.
- URL GL_OES_depth_texture_cube_map — Extends OES_depth_texture for depth cubemap textures.
HERE GL_OES_draw_buffers_indexed — Proposed specification that provides the ability to independently, per color output:
- enable or disable blending,
- set the blend equations,
- set the blend functions, and
- set the color write masks
- See also
- GL_EXT_draw_buffers_indexed
- URL GL_OES_draw_elements_base_vertex — Provides a method to specify a "base vertex offset" value that is then added to every vertex index that is transferred through DrawElements.
- HERE GL_OES_geometry_point_size — Defines a new shader type (called a geometry shader) that can run on the GPU.
- HERE GL_OES_geometry_shader — Defines a new shader type (called a geometry shader) that can run on the GPU.
- HERE GL_OES_gpu_shader5 — Provides a set of new features to the OpenGL ES Shading Language and related APIs to support the capabilities of new GPUs. These features extend the capabilities of version 3.10 of the OpenGL ES Shading Language.
- URL GL_OES_primitive_bounding_box — Provides a way for implementations to know which tiles incoming geometry will intersect before fully transforming (and expanding) the geometry.
- HERE GL_OES_shader_io_blocks — Provides support for application-defined interface blocks for passing application-specific information between shader stages.
- HERE GL_OES_tessellation_point_size — Introduces new tessellation stages and two new shader types to the OpenGL ES primitive processing pipeline.
- HERE GL_OES_tessellation_shader — Introduces new tessellation stages and two new shader types to the OpenGL ES primitive processing pipeline.
- HERE GL_OES_texture_buffer — Enables efficient image data transfer between image objects (i.e., textures and renderbuffers).
- HERE GL_OES_texture_cube_map_array — Expands texture array support to include cube map textures.
- HERE GL_OES_texture_view — Modifies the view of a texture data store in these ways: - Reinterprets the data format/type as a different format/type with the same element size. - Clamps the mipmap level range or array slice range.
- URL GL_OES_EGL_image — Creates texture maps from EGL images.
- URL GL_OES_EGL_image_external — Creates EGLImage texture targets from EGLImages.
- URL GL_OES_EGL_sync — Adds sync objects for querying or waiting on rendering completion.
- URL GL_OES_element_index_uint — Adds support for UNSIGNED_INT >type< values.
- URL GL_OES_fbo_render_mipmap — Supports attachment of a texture miplevel other than the base level to framebuffer objects.
- URL GL_OES_get_program_binary — Retrieved compiled shader binaries from GLES which can be loaded quickly in future application runs.
- URL GL_OES_mapbuffer — Maps and unmaps buffer objects.
- URL GL_OES_packed_depth_stencil — Provides format enum to access packed 24+8 depth stencil buffers.
- URL GL_OES_rgb8_rgba8 — Provides RGB8 and RGBA8 renderbuffer formats.
- URL GL_OES_sample_shading — Provides more control of sample count during antialiasing.
- URL GL_OES_sample_variables — Provides more control of sample selection during antialiasing.
- URL GL_OES_shader_image_atomic — Adds atomic read-modify-write image operations to shading language.
- URL GL_OES_shader_multisample_interpolation — Provides more control of sample selection during antialiasing.
- URL GL_OES_standard_derivatives — Provides GLSL-E shader functions that approximate derivatives.
- URL GL_OES_surfaceless_context — Allows GLES to operate with KHR_surfaceless_context where no EGLSurface is current.
- URL GL_OES_texture_float — Adds texture formats with 16- (aka half float) and 32-bit floating-point components.
- URL GL_OES_texture_float_linear — Allows support for LINEAR magnification filter and LINEAR, NEAREST_MIPMAP_LINEAR, LINEAR_MIPMAP_NEAREST and LINEAR_MIPMAP_NEAREST minification filters.
- URL GL_OES_texture_half_float — Adds texture formats with 16- (aka half float) and 32-bit floating-point components.
- URL GL_OES_texture_half_float_linear — Expands upon the OES_texture_half_float and OES_texture_float extensions.
- URL GL_OES_texture_npot — Relaxes wrap mode restrictions for non-power-of-two textures.
- URL GL_OES_texture_stencil8 — Adds 8-bit stencil-only texture format.
- URL GL_OES_texture_storage_multisample_2d_array — Extends support for multisample textures to 2D arrays.
- URL GL_OES_vertex_array_object — Introduces vertex array objects for encapsulating vertex buffer object state.
- URL GL_OES_vertex_half_float — Adds a 16-bit floating pt data type (aka half float) to vertex data specified using vertex arrays.