Difference between revisions of "GLAPI/glGetProgram"

From OpenGL Wiki
Jump to navigation Jump to search
m (Bot: Adding better formatting.)
m (Bot: Adding better formatting.)
Line 13: Line 13:
 
: Specifies the program object to be queried.
 
: Specifies the program object to be queried.
 
; pname
 
; pname
: Specifies the object parameter. Accepted symbolic names are {{enum|GL_DELETE_STATUS}}, {{enum|GL_LINK_STATUS}}, {{enum|GL_VALIDATE_STATUS}}, {{enum|GL_INFO_LOG_LENGTH}}, {{enum|GL_ATTACHED_SHADERS}}, {{enum|GL_ACTIVE_ATTRIBUTES}}, {{enum|GL_ACTIVE_ATTRIBUTE_MAX_LENGTH}}, {{enum|GL_ACTIVE_UNIFORMS}}, {{enum|GL_ACTIVE_UNIFORM_BLOCKS}}, {{enum|GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH}}, {{enum|GL_ACTIVE_UNIFORM_MAX_LENGTH}}, {{enum|GL_PROGRAM_BINARY_LENGTH}}, {{enum|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}, {{enum|GL_TRANSFORM_FEEDBACK_VARYINGS}}, {{enum|GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH}}, {{enum|GL_GEOMETRY_VERTICES_OUT}}, {{enum|GL_GEOMETRY_INPUT_TYPE}}, and {{enum|GL_GEOMETRY_OUTPUT_TYPE}}.
+
: Specifies the object parameter. Accepted symbolic names are {{enum|GL_DELETE_STATUS}}, {{enum|GL_LINK_STATUS}}, {{enum|GL_VALIDATE_STATUS}}, {{enum|GL_INFO_LOG_LENGTH}}, {{enum|GL_ATTACHED_SHADERS}}, {{enum|GL_ACTIVE_ATTRIBUTES}}, {{enum|GL_ACTIVE_ATTRIBUTE_MAX_LENGTH}}, {{enum|GL_ACTIVE_UNIFORMS}}, {{enum|GL_ACTIVE_UNIFORM_BLOCKS}}, {{enum|GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH}}, {{enum|GL_ACTIVE_UNIFORM_MAX_LENGTH}}, {{enum|GL_COMPUTE_WORK_GROUP_SIZE}}{{enum|GL_PROGRAM_BINARY_LENGTH}}, {{enum|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}, {{enum|GL_TRANSFORM_FEEDBACK_VARYINGS}}, {{enum|GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH}}, {{enum|GL_GEOMETRY_VERTICES_OUT}}, {{enum|GL_GEOMETRY_INPUT_TYPE}}, and {{enum|GL_GEOMETRY_OUTPUT_TYPE}}.
 
; params
 
; params
 
: Returns the requested object parameter.
 
: Returns the requested object parameter.
Line 54: Line 54:
 
:  
 
:  
 
{{param|params}} returns the length of the program binary, in bytes that will be returned by a call to {{apifunc|glGetProgramBinary}}. When a progam's {{enum|GL_LINK_STATUS}} is {{enum|GL_FALSE}}, its program binary length is zero.
 
{{param|params}} returns the length of the program binary, in bytes that will be returned by a call to {{apifunc|glGetProgramBinary}}. When a progam's {{enum|GL_LINK_STATUS}} is {{enum|GL_FALSE}}, its program binary length is zero.
 +
; {{enum|GL_COMPUTE_WORK_GROUP_SIZE}}
 +
:
 +
{{param|params}} returns an array of three integers containing the local work group size of the compute program as specified by its input layout qualifier(s). {{param|program}} must be the name of a program object that has been previously linked successfully and contains a binary for the compute shader stage.
 
; {{enum|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}
 
; {{enum|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}
 
:  
 
:  
Line 77: Line 80:
  
 
{{enum|GL_GEOMETRY_VERTICES_OUT}}, {{enum|GL_GEOMETRY_INPUT_TYPE}} and {{enum|GL_GEOMETRY_OUTPUT_TYPE}} are accepted only if the GL version is 3.2 or greater.
 
{{enum|GL_GEOMETRY_VERTICES_OUT}}, {{enum|GL_GEOMETRY_INPUT_TYPE}} and {{enum|GL_GEOMETRY_OUTPUT_TYPE}} are accepted only if the GL version is 3.2 or greater.
 +
 +
{{enum|GL_COMPUTE_WORK_GROUP_SIZE}} is accepted only if the GL version is 4.3 or greater.
  
 
If an error is generated, no change is made to the contents of {{param|params}}.
 
If an error is generated, no change is made to the contents of {{param|params}}.
Line 89: Line 94:
  
 
{{enum|GL_INVALID_ENUM}} is generated if {{param|pname}} is not an accepted value.
 
{{enum|GL_INVALID_ENUM}} is generated if {{param|pname}} is not an accepted value.
 +
 +
{{enum|GL_INVALID_OPERATION}} is generated if {{param|pname}} is {{enum|GL_COMPUTE_WORK_GROUP_SIZE}} and {{param|program}} does not contain a binary for the compute shader stage.
  
 
== Associated Gets ==
 
== Associated Gets ==

Revision as of 08:27, 13 August 2012

glGetProgramiv
Core in version 4.6
Core since version 2.0

glGetProgramiv: Returns a parameter from a program object

Function Definition

 void glGetProgramiv(GLuint program​, GLenum pname​, GLint *params​);
program
Specifies the program object to be queried.
pname
Specifies the object parameter. Accepted symbolic names are GL_DELETE_STATUS, GL_LINK_STATUS, GL_VALIDATE_STATUS, GL_INFO_LOG_LENGTH, GL_ATTACHED_SHADERS, GL_ACTIVE_ATTRIBUTES, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, GL_ACTIVE_UNIFORMS, GL_ACTIVE_UNIFORM_BLOCKS, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, GL_ACTIVE_UNIFORM_MAX_LENGTH, GL_COMPUTE_WORK_GROUP_SIZEGL_PROGRAM_BINARY_LENGTH, GL_TRANSFORM_FEEDBACK_BUFFER_MODE, GL_TRANSFORM_FEEDBACK_VARYINGS, GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH, GL_GEOMETRY_VERTICES_OUT, GL_GEOMETRY_INPUT_TYPE, and GL_GEOMETRY_OUTPUT_TYPE.
params
Returns the requested object parameter.

Description

glGetProgram returns in params​ the value of a parameter for a specific program object. The following parameters are defined:

GL_DELETE_STATUS

params​ returns GL_TRUE if program​ is currently flagged for deletion, and GL_FALSE otherwise.

GL_LINK_STATUS

params​ returns GL_TRUE if the last link operation on program​ was successful, and GL_FALSE otherwise.

GL_VALIDATE_STATUS

params​ returns GL_TRUE or if the last validation operation on program​ was successful, and GL_FALSE otherwise.

GL_INFO_LOG_LENGTH

params​ returns the number of characters in the information log for program​ including the null termination character (i.e., the size of the character buffer required to store the information log). If program​ has no information log, a value of 0 is returned.

GL_ATTACHED_SHADERS

params​ returns the number of shader objects attached to program​.

GL_ACTIVE_ATOMIC_COUNTER_BUFFERS

params​ returns the number of active attribute atomic counter buffers used by program​.

GL_ACTIVE_ATTRIBUTES

params​ returns the number of active attribute variables for program​.

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH

params​ returns the length of the longest active attribute name for program​, including the null termination character (i.e., the size of the character buffer required to store the longest attribute name). If no active attributes exist, 0 is returned.

GL_ACTIVE_UNIFORMS

params​ returns the number of active uniform variables for program​.

GL_ACTIVE_UNIFORM_MAX_LENGTH

params​ returns the length of the longest active uniform variable name for program​, including the null termination character (i.e., the size of the character buffer required to store the longest uniform variable name). If no active uniform variables exist, 0 is returned.

GL_PROGRAM_BINARY_LENGTH

params​ returns the length of the program binary, in bytes that will be returned by a call to glGetProgramBinary. When a progam's GL_LINK_STATUS is GL_FALSE, its program binary length is zero.

GL_COMPUTE_WORK_GROUP_SIZE

params​ returns an array of three integers containing the local work group size of the compute program as specified by its input layout qualifier(s). program​ must be the name of a program object that has been previously linked successfully and contains a binary for the compute shader stage.

GL_TRANSFORM_FEEDBACK_BUFFER_MODE

params​ returns a symbolic constant indicating the buffer mode used when transform feedback is active. This may be GL_SEPARATE_ATTRIBS or GL_INTERLEAVED_ATTRIBS.

GL_TRANSFORM_FEEDBACK_VARYINGS

params​ returns the number of varying variables to capture in transform feedback mode for the program.

GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH

params​ returns the length of the longest variable name to be used for transform feedback, including the null-terminator.

GL_GEOMETRY_VERTICES_OUT

params​ returns the maximum number of vertices that the geometry shader in program​ will output.

GL_GEOMETRY_INPUT_TYPE

params​ returns a symbolic constant indicating the primitive type accepted as input to the geometry shader contained in program​.

GL_GEOMETRY_OUTPUT_TYPE

params​ returns a symbolic constant indicating the primitive type that will be output by the geometry shader contained in program​.

Notes

GL_ACTIVE_UNIFORM_BLOCKS and GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH are available only if the GL version 3.1 or greater.

GL_GEOMETRY_VERTICES_OUT, GL_GEOMETRY_INPUT_TYPE and GL_GEOMETRY_OUTPUT_TYPE are accepted only if the GL version is 3.2 or greater.

GL_COMPUTE_WORK_GROUP_SIZE is accepted only if the GL version is 4.3 or greater.

If an error is generated, no change is made to the contents of params​.

Errors

GL_INVALID_VALUE is generated if program​ is not a value generated by OpenGL.

GL_INVALID_OPERATION is generated if program​ does not refer to a program object.

GL_INVALID_OPERATION is generated if pname​ is GL_GEOMETRY_VERTICES_OUT, GL_GEOMETRY_INPUT_TYPE, or GL_GEOMETRY_OUTPUT_TYPE, and program​ does not contain a geometry shader.

GL_INVALID_ENUM is generated if pname​ is not an accepted value.

GL_INVALID_OPERATION is generated if pname​ is GL_COMPUTE_WORK_GROUP_SIZE and program​ does not contain a binary for the compute shader stage.

Associated Gets

glGetActiveAttrib with argument program​

glGetActiveUniform with argument program​

glGetAttachedShaders with argument program​

glGetProgramInfoLog with argument program​

glIsProgram

See Also

glAttachShader, glCreateProgram, glDeleteProgram, glGetShader, glLinkProgram, glValidateProgram

Copyright

Copyright © 2003-2005 3Dlabs Inc. Ltd. Copyright © 2010-2011 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.