Class ARBGeometryShader4
ARB_geometry_shader4 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, flat shading 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 OpenGL primitive specified by the application.
Furthermore, ARB_geometry_shader4 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 Begin time, if a primitive mode of TRIANGLES is specified.
Promoted to core in OpenGL 3.2.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intAccepted by thepnameparameter of GetFramebufferAttachment- ParameterivARB.static final intAccepted by thepnameparameter of GetFramebufferAttachment- ParameterivARB.static final intReturned by CheckFramebufferStatusARB.static final intReturned by CheckFramebufferStatusARB.static final intAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.static final intAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.static final intAccepted by thetypeparameter of CreateShader and returned by theparamsparameter of GetShaderiv.static final intAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.static final intAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.static final intAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.static final intAccepted by thecapparameter of Enable, Disable, and IsEnabled, and by thepnameparameter of GetIntegerv, GetFloatv, GetDoublev, and GetBooleanv.static final intAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.static final intAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidglFramebufferTextureARB(int target, int attachment, int texture, int level) Attaches a specified level of a texture object as one of the logical buffers of the currently bound framebuffer object, to render directly into the texture image.static voidglFramebufferTextureFaceARB(int target, int attachment, int texture, int level, int face) Operates likeFramebufferTextureARB, except that only a single face of a cube map texture, given byface, is attached to the attachment point.static voidglFramebufferTextureLayerARB(int target, int attachment, int texture, int level, int layer) Operates likeFramebufferTextureARB, except that only a single layer of the texture level, numberedlayer, is attached to the attachment point.static voidglProgramParameteriARB(int program, int pname, int value) Sets a program object parameter.
-
Field Details
-
GL_GEOMETRY_SHADER_ARB
public static final int GL_GEOMETRY_SHADER_ARBAccepted by thetypeparameter of CreateShader and returned by theparamsparameter of GetShaderiv.- See Also:
-
GL_GEOMETRY_VERTICES_OUT_ARB
public static final int GL_GEOMETRY_VERTICES_OUT_ARBAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.- See Also:
-
GL_GEOMETRY_INPUT_TYPE_ARB
public static final int GL_GEOMETRY_INPUT_TYPE_ARBAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.- See Also:
-
GL_GEOMETRY_OUTPUT_TYPE_ARB
public static final int GL_GEOMETRY_OUTPUT_TYPE_ARBAccepted by thepnameparameter of ProgramParameteriARB and GetProgramiv.- See Also:
-
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB
public static final int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB
public static final int GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_MAX_VERTEX_VARYING_COMPONENTS_ARB
public static final int GL_MAX_VERTEX_VARYING_COMPONENTS_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB
public static final int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB
public static final int GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB
public static final int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARBAccepted by thepnameparameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev.- See Also:
-
GL_LINES_ADJACENCY_ARB
public static final int GL_LINES_ADJACENCY_ARBAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.- See Also:
-
GL_LINE_STRIP_ADJACENCY_ARB
public static final int GL_LINE_STRIP_ADJACENCY_ARBAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.- See Also:
-
GL_TRIANGLES_ADJACENCY_ARB
public static final int GL_TRIANGLES_ADJACENCY_ARBAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.- See Also:
-
GL_TRIANGLE_STRIP_ADJACENCY_ARB
public static final int GL_TRIANGLE_STRIP_ADJACENCY_ARBAccepted by themodeparameter of Begin, DrawArrays, MultiDrawArrays, DrawElements, MultiDrawElements, and DrawRangeElements.- See Also:
-
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARBReturned by CheckFramebufferStatusARB.- See Also:
-
GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB
public static final int GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARBReturned by CheckFramebufferStatusARB.- See Also:
-
GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB
public static final int GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARBAccepted by thepnameparameter of GetFramebufferAttachment- ParameterivARB.- See Also:
-
GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYERAccepted by thepnameparameter of GetFramebufferAttachment- ParameterivARB.- See Also:
-
GL_PROGRAM_POINT_SIZE_ARB
public static final int GL_PROGRAM_POINT_SIZE_ARBAccepted by thecapparameter of Enable, Disable, and IsEnabled, and by thepnameparameter of GetIntegerv, GetFloatv, GetDoublev, and GetBooleanv.- See Also:
-
-
Method Details
-
glProgramParameteriARB
public static void glProgramParameteriARB(int program, int pname, int value) Sets a program object parameter.The error
INVALID_VALUEis generated ifpnameisGEOMETRY_INPUT_TYPE_ARBandvalueis not one ofPOINTS,LINES,LINES_ADJACENCY_ARB,TRIANGLESorTRIANGLES_ADJACENCY_ARB.The error
INVALID_VALUEis generated ifpnameisGEOMETRY_OUTPUT_TYPE_ARBandvalueis not one ofPOINTS,LINE_STRIPorTRIANGLE_STRIP.The error
INVALID_VALUEis generated ifpnameisGEOMETRY_VERTICES_OUT_ARBandvalueis negative.The error
INVALID_VALUEis generated ifpnameisGEOMETRY_VERTICES_OUT_ARBandvalueexceedsMAX_GEOMETRY_OUTPUT_VERTICES_ARB.The error
INVALID_VALUEis generated ifpnameis set toGEOMETRY_VERTICES_OUT_ARBand the product ofvalueand the sum of all components of all active varying variables exceedsMAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB.- Parameters:
program- the program objectpname- the parameter to set. One of:GEOMETRY_VERTICES_OUT_ARBGEOMETRY_INPUT_TYPE_ARBGEOMETRY_OUTPUT_TYPE_ARBvalue- the value being set
-
glFramebufferTextureARB
public static void glFramebufferTextureARB(int target, int attachment, int texture, int level) Attaches a specified level of a texture object as one of the logical buffers of the currently bound framebuffer object, to render directly into the texture image.If
textureis zero, any image or array of images attached to the attachment point named byattachmentis detached, and the state of the attachment point is reset to its initial values.levelis ignored iftextureis zero.If
textureis non-zero, FramebufferTextureARB attaches levellevelof the texture object namedtextureto the framebuffer attachment point named byattachment. The errorINVALID_VALUEis generated iftextureis not the name of a texture object, or iflevelis not a supported texture level number for textures of the type corresponding totarget. The errorINVALID_OPERATIONis generated iftextureis the name of a buffer texture.If
textureis the name of a three-dimensional texture, cube map texture, or one- or two-dimensional array texture, the texture level attached to the framebuffer attachment point is an array of images, and the framebuffer attachment is considered layered.- Parameters:
target- the render target. Must be:FRAMEBUFFERattachment- must be one of the attachments points of the framebuffertexture- the texture object namelevel- the texture level
-
glFramebufferTextureLayerARB
public static void glFramebufferTextureLayerARB(int target, int attachment, int texture, int level, int layer) Operates likeFramebufferTextureARB, except that only a single layer of the texture level, numberedlayer, is attached to the attachment point.If
textureis non-zero, the errorINVALID_VALUEis generated iflayeris negative, or iftextureis not the name of a texture object. The errorINVALID_OPERATIONis generated unlesstextureis zero or the name of a three-dimensional or one- or two-dimensional array texture.- Parameters:
target- the render target. Must be:FRAMEBUFFERattachment- must be one of the attachments points of the framebuffertexture- the texture object namelevel- the texture levellayer- the texture layer
-
glFramebufferTextureFaceARB
public static void glFramebufferTextureFaceARB(int target, int attachment, int texture, int level, int face) Operates likeFramebufferTextureARB, except that only a single face of a cube map texture, given byface, is attached to the attachment point.If
textureis non-zero, the errorINVALID_VALUEis generated iftextureis not the name of a texture object. The errorINVALID_OPERATIONis generated unlesstextureis zero or the name of a cube map texture.- Parameters:
target- the render target. Must be:FRAMEBUFFERattachment- must be one of the attachments points of the framebuffertexture- the texture object namelevel- the texture levelface- the cube map face. One of:TEXTURE_CUBE_MAP_POSITIVE_XTEXTURE_CUBE_MAP_NEGATIVE_XTEXTURE_CUBE_MAP_POSITIVE_YTEXTURE_CUBE_MAP_NEGATIVE_YTEXTURE_CUBE_MAP_POSITIVE_ZTEXTURE_CUBE_MAP_NEGATIVE_Z
-