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.)
 
(6 intermediate revisions by the same user not shown)
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 {{code|GL_DELETE_STATUS}}, {{code|GL_LINK_STATUS}}, {{code|GL_VALIDATE_STATUS}}, {{code|GL_INFO_LOG_LENGTH}}, {{code|GL_ATTACHED_SHADERS}}, {{code|GL_ACTIVE_ATTRIBUTES}}, {{code|GL_ACTIVE_ATTRIBUTE_MAX_LENGTH}}, {{code|GL_ACTIVE_UNIFORMS}}, {{code|GL_ACTIVE_UNIFORM_BLOCKS}}, {{code|GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH}}, {{code|GL_ACTIVE_UNIFORM_MAX_LENGTH}}, {{code|GL_PROGRAM_BINARY_LENGTH}}, {{code|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}, {{code|GL_TRANSFORM_FEEDBACK_VARYINGS}}, {{code|GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH}}, {{code|GL_GEOMETRY_VERTICES_OUT}}, {{code|GL_GEOMETRY_INPUT_TYPE}}, and {{code|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_ATOMIC_COUNTER_BUFFERS}}, {{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 21: Line 21:
 
'''glGetProgram''' returns in {{param|params}} the value of a parameter for a specific program object. The following parameters are defined:
 
'''glGetProgram''' returns in {{param|params}} the value of a parameter for a specific program object. The following parameters are defined:
  
; {{code|GL_DELETE_STATUS}}
+
; {{enum|GL_DELETE_STATUS}}
 
:  
 
:  
{{param|params}} returns {{code|GL_TRUE}} if {{param|program}} is currently flagged for deletion, and {{code|GL_FALSE}} otherwise.
+
{{param|params}} returns {{enum|GL_TRUE}} if {{param|program}} is currently flagged for deletion, and {{enum|GL_FALSE}} otherwise.
; {{code|GL_LINK_STATUS}}
+
; {{enum|GL_LINK_STATUS}}
 
:  
 
:  
{{param|params}} returns {{code|GL_TRUE}} if the last link operation on {{param|program}} was successful, and {{code|GL_FALSE}} otherwise.
+
{{param|params}} returns {{enum|GL_TRUE}} if the last link operation on {{param|program}} was successful, and {{enum|GL_FALSE}} otherwise.
; {{code|GL_VALIDATE_STATUS}}
+
; {{enum|GL_VALIDATE_STATUS}}
 
:  
 
:  
{{param|params}} returns {{code|GL_TRUE}} or if the last validation operation on {{param|program}} was successful, and {{code|GL_FALSE}} otherwise.
+
{{param|params}} returns {{enum|GL_TRUE}} or if the last validation operation on {{param|program}} was successful, and {{enum|GL_FALSE}} otherwise.
; {{code|GL_INFO_LOG_LENGTH}}
+
; {{enum|GL_INFO_LOG_LENGTH}}
 
:  
 
:  
 
{{param|params}} returns the number of characters in the information log for {{param|program}} including the null termination character (i.e., the size of the character buffer required to store the information log). If {{param|program}} has no information log, a value of 0 is returned.
 
{{param|params}} returns the number of characters in the information log for {{param|program}} including the null termination character (i.e., the size of the character buffer required to store the information log). If {{param|program}} has no information log, a value of 0 is returned.
; {{code|GL_ATTACHED_SHADERS}}
+
; {{enum|GL_ATTACHED_SHADERS}}
 
:  
 
:  
 
{{param|params}} returns the number of shader objects attached to {{param|program}}.
 
{{param|params}} returns the number of shader objects attached to {{param|program}}.
; {{code|GL_ACTIVE_ATOMIC_COUNTER_BUFFERS}}
+
; {{enum|GL_ACTIVE_ATOMIC_COUNTER_BUFFERS}}
 
:  
 
:  
 
{{param|params}} returns the number of active attribute atomic counter buffers used by {{param|program}}.
 
{{param|params}} returns the number of active attribute atomic counter buffers used by {{param|program}}.
; {{code|GL_ACTIVE_ATTRIBUTES}}
+
; {{enum|GL_ACTIVE_ATTRIBUTES}}
 
:  
 
:  
 
{{param|params}} returns the number of active attribute variables for {{param|program}}.
 
{{param|params}} returns the number of active attribute variables for {{param|program}}.
; {{code|GL_ACTIVE_ATTRIBUTE_MAX_LENGTH}}
+
; {{enum|GL_ACTIVE_ATTRIBUTE_MAX_LENGTH}}
 
:  
 
:  
 
{{param|params}} returns the length of the longest active attribute name for {{param|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.
 
{{param|params}} returns the length of the longest active attribute name for {{param|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.
; {{code|GL_ACTIVE_UNIFORMS}}
+
; {{enum|GL_ACTIVE_UNIFORMS}}
 
:  
 
:  
 
{{param|params}} returns the number of active uniform variables for {{param|program}}.
 
{{param|params}} returns the number of active uniform variables for {{param|program}}.
; {{code|GL_ACTIVE_UNIFORM_MAX_LENGTH}}
+
; {{enum|GL_ACTIVE_UNIFORM_MAX_LENGTH}}
 
:  
 
:  
 
{{param|params}} returns the length of the longest active uniform variable name for {{param|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.
 
{{param|params}} returns the length of the longest active uniform variable name for {{param|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.
; {{code|GL_PROGRAM_BINARY_LENGTH}}
+
; {{enum|GL_PROGRAM_BINARY_LENGTH}}
 
:  
 
:  
{{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 {{code|GL_LINK_STATUS}} is {{code|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.
; {{code|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}
+
; {{enum|GL_COMPUTE_WORK_GROUP_SIZE}}
 
:  
 
:  
{{param|params}} returns a symbolic constant indicating the buffer mode used when transform feedback is active. This may be {{code|GL_SEPARATE_ATTRIBS}} or {{code|GL_INTERLEAVED_ATTRIBS}}.
+
{{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.
; {{code|GL_TRANSFORM_FEEDBACK_VARYINGS}}
+
; {{enum|GL_TRANSFORM_FEEDBACK_BUFFER_MODE}}
 +
:
 +
{{param|params}} returns a symbolic constant indicating the buffer mode used when transform feedback is active. This may be {{enum|GL_SEPARATE_ATTRIBS}} or {{enum|GL_INTERLEAVED_ATTRIBS}}.
 +
; {{enum|GL_TRANSFORM_FEEDBACK_VARYINGS}}
 
:  
 
:  
 
{{param|params}} returns the number of varying variables to capture in transform feedback mode for the program.
 
{{param|params}} returns the number of varying variables to capture in transform feedback mode for the program.
; {{code|GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH}}
+
; {{enum|GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH}}
 
:  
 
:  
 
{{param|params}} returns the length of the longest variable name to be used for transform feedback, including the null-terminator.
 
{{param|params}} returns the length of the longest variable name to be used for transform feedback, including the null-terminator.
; {{code|GL_GEOMETRY_VERTICES_OUT}}
+
; {{enum|GL_GEOMETRY_VERTICES_OUT}}
 
:  
 
:  
 
{{param|params}} returns the maximum number of vertices that the geometry shader in {{param|program}} will output.
 
{{param|params}} returns the maximum number of vertices that the geometry shader in {{param|program}} will output.
; {{code|GL_GEOMETRY_INPUT_TYPE}}
+
; {{enum|GL_GEOMETRY_INPUT_TYPE}}
 
:  
 
:  
 
{{param|params}} returns a symbolic constant indicating the primitive type accepted as input to the geometry shader contained in {{param|program}}.
 
{{param|params}} returns a symbolic constant indicating the primitive type accepted as input to the geometry shader contained in {{param|program}}.
; {{code|GL_GEOMETRY_OUTPUT_TYPE}}
+
; {{enum|GL_GEOMETRY_OUTPUT_TYPE}}
 
:  
 
:  
 
{{param|params}} returns a symbolic constant indicating the primitive type that will be output by the geometry shader contained in {{param|program}}.
 
{{param|params}} returns a symbolic constant indicating the primitive type that will be output by the geometry shader contained in {{param|program}}.
 
== Notes ==
 
== Notes ==
  
{{code|GL_ACTIVE_UNIFORM_BLOCKS}} and {{code|GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH}} are available only if the GL version 3.1 or greater.
+
{{enum|GL_ACTIVE_UNIFORM_BLOCKS}} and {{enum|GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH}} are available only if the GL version 3.1 or greater.
  
{{code|GL_GEOMETRY_VERTICES_OUT}}, {{code|GL_GEOMETRY_INPUT_TYPE}} and {{code|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 82: Line 87:
 
== Errors ==
 
== Errors ==
  
{{code|GL_INVALID_VALUE}} is generated if {{param|program}} is not a value generated by OpenGL.
+
{{enum|GL_INVALID_VALUE}} is generated if {{param|program}} is not a value generated by OpenGL.
 +
 
 +
{{enum|GL_INVALID_OPERATION}} is generated if {{param|program}} does not refer to a program object.
  
{{code|GL_INVALID_OPERATION}} is generated if {{param|program}} does not refer to a program object.
+
{{enum|GL_INVALID_OPERATION}} is generated if {{param|pname}} is {{enum|GL_GEOMETRY_VERTICES_OUT}}, {{enum|GL_GEOMETRY_INPUT_TYPE}}, or {{enum|GL_GEOMETRY_OUTPUT_TYPE}}, and {{param|program}} does not contain a geometry shader.
  
{{code|GL_INVALID_OPERATION}} is generated if {{param|pname}} is {{code|GL_GEOMETRY_VERTICES_OUT}}, {{code|GL_GEOMETRY_INPUT_TYPE}}, or {{code|GL_GEOMETRY_OUTPUT_TYPE}}, and {{param|program}} does not contain a geometry shader.
+
{{enum|GL_INVALID_ENUM}} is generated if {{param|pname}} is not an accepted value.
  
{{code|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 ==
Line 104: Line 111:
 
== See Also ==
 
== See Also ==
  
{{apifunc|glAttachShader}}, {{apifunc|glCreateProgram}}, {{apifunc|glDeleteProgram}}, {{apifunc|glGetShader}}, {{apifunc|glLinkProgram}}, {{apifunc|glValidateProgram}}
+
{{apifunc|glAttachShader}}, {{apifunc|glCreateProgram}}, {{apifunc|glCreateShaderProgram}}, {{apifunc|glDeleteProgram}}, {{apifunc|glGetShader}}, {{apifunc|glLinkProgram}}, {{apifunc|glValidateProgram}}
  
 
== Copyright ==
 
== Copyright ==
Line 112: Line 119:
 
[[Category:Core API Reference|GetProgram]]
 
[[Category:Core API Reference|GetProgram]]
 
[[Category:Core API Ref Shader Program Creation|GetProgram]]
 
[[Category:Core API Ref Shader Program Creation|GetProgram]]
 +
[[Category:Program Object API State Functions|GetProgram]]

Latest revision as of 09:59, 15 August 2013

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_ATOMIC_COUNTER_BUFFERS, 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, glCreateShaderProgram, 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/.