Class OESGeometryShader
OES_geometry_shader defines a new shader type available to be run on the GPU, called a geometry shader. Geometry shaders are run after vertices are transformed, but prior to color clamping, flatshading and clipping.
A geometry shader begins with a single primitive (point, line, triangle). It can read the attributes of any of the vertices in the primitive and use them to generate new primitives. A geometry shader has a fixed output primitive type (point, line strip, or triangle strip) and emits vertices to define a new primitive. A geometry shader can emit multiple disconnected primitives. The primitives emitted by the geometry shader are clipped and then processed like an equivalent primitive specified by the application.
Furthermore, OES_geometry_shader provides four additional primitive types: lines with adjacency, line strips with adjacency, separate triangles with adjacency, and triangle strips with adjacency. Some of the vertices specified in these new primitive types are not part of the ordinary primitives, instead they represent neighboring vertices that are adjacent to the two line segment end points (lines/strips) or the three triangle edges (triangles/tstrips). These vertices can be accessed by geometry shaders and used to match up the vertices emitted by the geometry shader with those of neighboring primitives.
Since geometry shaders expect a specific input primitive type, an error will occur if the application presents primitives of a different type. For example, if a geometry shader expects points, an error will occur at drawing time if a primitive mode of TRIANGLES is specified.
This extension also adds the notion of layered framebuffer attachments and framebuffers that can be used in conjunction with geometry shaders to allow programs to direct primitives to a face of a cube map or layer of a three-dimensional texture or two-dimensional array texture. The layer used for rendering can be selected by the geometry shader at run time. The framebuffer layer count present in GL 4.x and removed from ES 3.1 is restored.
Not all geometry shader implementations have the ability to write the point size from a geometry shader. Thus a second extension string and shading language enable are provided for implementations which do support geometry shader point size.
This extension relies on the OES_shader_io_blocks extension to provide the required functionality for declaring input and output blocks and interfacing between shaders.
Requires GLES 3.1
and OES_shader_io_blocks
or EXT_shader_io_blocks
.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Returned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES.static final int
Accepted by thepname
parameter of GetFramebufferAttachmentParameteriv.static final int
Accepted by thepname
parameter of FramebufferParameteri, and GetFramebufferParameteriv.static final int
Returned by CheckFramebufferStatus.static final int
Accepted by thepname
parameter of GetProgramiv.static final int
Accepted by thepname
parameter of GetProgramiv.static final int
Accepted by thepname
parameter of GetProgramiv.static final int
Accepted by thestages
parameter of UseProgramStages.static final int
Accepted by thepname
parameter of GetProgramiv.static final int
Accepted by thetype
parameter of CreateShader and CreateShaderProgramv, by thepname
parameter of GetProgramPipelineiv and returned in theparams
parameter of GetShaderiv whenpname
is SHADER_TYPE.static final int
Returned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.static final int
Accepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetIntegerv, GetBooleanv, GetInteger64v, and GetFloatv.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.static final int
Accepted by thetarget
parameter of BeginQuery, EndQuery, GetQueryiv, and GetQueryObjectuiv.static final int
Accepted by theprops
parameter of GetProgramResourceiv.static final int
Accepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.static final int
Accepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.static final int
Returned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
glFramebufferTextureOES
(int target, int attachment, int texture, int level)
-
Field Details
-
GL_GEOMETRY_SHADER_OES
public static final int GL_GEOMETRY_SHADER_OESAccepted by thetype
parameter of CreateShader and CreateShaderProgramv, by thepname
parameter of GetProgramPipelineiv and returned in theparams
parameter of GetShaderiv whenpname
is SHADER_TYPE.- See Also:
-
GL_GEOMETRY_SHADER_BIT_OES
public static final int GL_GEOMETRY_SHADER_BIT_OESAccepted by thestages
parameter of UseProgramStages.- See Also:
-
GL_GEOMETRY_LINKED_VERTICES_OUT_OES
public static final int GL_GEOMETRY_LINKED_VERTICES_OUT_OESAccepted by thepname
parameter of GetProgramiv.- See Also:
-
GL_GEOMETRY_LINKED_INPUT_TYPE_OES
public static final int GL_GEOMETRY_LINKED_INPUT_TYPE_OESAccepted by thepname
parameter of GetProgramiv.- See Also:
-
GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES
public static final int GL_GEOMETRY_LINKED_OUTPUT_TYPE_OESAccepted by thepname
parameter of GetProgramiv.- See Also:
-
GL_GEOMETRY_SHADER_INVOCATIONS_OES
public static final int GL_GEOMETRY_SHADER_INVOCATIONS_OESAccepted by thepname
parameter of GetProgramiv.- See Also:
-
GL_LAYER_PROVOKING_VERTEX_OES
public static final int GL_LAYER_PROVOKING_VERTEX_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES
public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES
public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES
public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES
public static final int GL_MAX_GEOMETRY_INPUT_COMPONENTS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES
public static final int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES
public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES
public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES
public static final int GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES
public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES
public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES
public static final int GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES
public static final int GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES
public static final int GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OESAccepted by thepname
parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetInteger64v.- See Also:
-
GL_FIRST_VERTEX_CONVENTION_OES
public static final int GL_FIRST_VERTEX_CONVENTION_OESReturned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES.- See Also:
-
GL_LAST_VERTEX_CONVENTION_OES
public static final int GL_LAST_VERTEX_CONVENTION_OESReturned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES.- See Also:
-
GL_UNDEFINED_VERTEX_OES
public static final int GL_UNDEFINED_VERTEX_OESReturned in thedata
parameter from a Get query with apname
of LAYER_PROVOKING_VERTEX_OES.- See Also:
-
GL_PRIMITIVES_GENERATED_OES
public static final int GL_PRIMITIVES_GENERATED_OESAccepted by thetarget
parameter of BeginQuery, EndQuery, GetQueryiv, and GetQueryObjectuiv.- See Also:
-
GL_LINES_ADJACENCY_OES
public static final int GL_LINES_ADJACENCY_OESAccepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.- See Also:
-
GL_LINE_STRIP_ADJACENCY_OES
public static final int GL_LINE_STRIP_ADJACENCY_OESAccepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.- See Also:
-
GL_TRIANGLES_ADJACENCY_OES
public static final int GL_TRIANGLES_ADJACENCY_OESAccepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.- See Also:
-
GL_TRIANGLE_STRIP_ADJACENCY_OES
public static final int GL_TRIANGLE_STRIP_ADJACENCY_OESAccepted by themode
parameter of DrawArrays, DrawElements, and other commands which draw primitives.- See Also:
-
GL_FRAMEBUFFER_DEFAULT_LAYERS_OES
public static final int GL_FRAMEBUFFER_DEFAULT_LAYERS_OESAccepted by thepname
parameter of FramebufferParameteri, and GetFramebufferParameteriv.- See Also:
-
GL_MAX_FRAMEBUFFER_LAYERS_OES
public static final int GL_MAX_FRAMEBUFFER_LAYERS_OESAccepted by thepname
parameter of GetIntegerv, GetBooleanv, GetInteger64v, and GetFloatv.- See Also:
-
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES
public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OESReturned by CheckFramebufferStatus.- See Also:
-
GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES
public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OESAccepted by thepname
parameter of GetFramebufferAttachmentParameteriv.- See Also:
-
GL_REFERENCED_BY_GEOMETRY_SHADER_OES
public static final int GL_REFERENCED_BY_GEOMETRY_SHADER_OESAccepted by theprops
parameter of GetProgramResourceiv.- See Also:
-
-
Method Details
-
glFramebufferTextureOES
public static void glFramebufferTextureOES(int target, int attachment, int texture, int level)
-