|
|
|
@ -50,14 +50,15 @@ to @fn_gl{BindTransformFeedback}. Transform feedback limits and |
|
|
|
implementation-defined values (such as @ref maxSeparateComponents()) are |
|
|
|
implementation-defined values (such as @ref maxSeparateComponents()) are |
|
|
|
cached, so repeated queries don't result in repeated @fn_gl{Get} calls. |
|
|
|
cached, so repeated queries don't result in repeated @fn_gl{Get} calls. |
|
|
|
|
|
|
|
|
|
|
|
If extension @extension{ARB,direct_state_access} (part of OpenGL 4.5) is |
|
|
|
If @extension{ARB,direct_state_access} (part of OpenGL 4.5) is available, |
|
|
|
available, functions @ref attachBuffer() and @ref attachBuffers() use DSA to |
|
|
|
functions @ref attachBuffer() and @ref attachBuffers() use DSA to avoid |
|
|
|
avoid unnecessary call to @fn_gl{BindTransformFeedback}. See their respective |
|
|
|
unnecessary calls to @fn_gl{BindTransformFeedback}. See their respective |
|
|
|
documentation for more information. |
|
|
|
documentation for more information. |
|
|
|
|
|
|
|
|
|
|
|
@see @ref PrimitiveQuery |
|
|
|
@see @ref PrimitiveQuery |
|
|
|
@requires_gl40 Extension @extension{ARB,transform_feedback2} |
|
|
|
@requires_gl40 Extension @extension{ARB,transform_feedback2} |
|
|
|
@requires_gles30 Transform feedback is not available in OpenGL ES 2.0 |
|
|
|
@requires_gles30 Transform feedback is not available in OpenGL ES 2.0. |
|
|
|
|
|
|
|
@requires_webgl20 Transform feedback is not available in WebGL 1.0. |
|
|
|
@todo @extension{AMD,transform_feedback3_lines_triangles}? |
|
|
|
@todo @extension{AMD,transform_feedback3_lines_triangles}? |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
@ -140,7 +141,8 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* (part of OpenGL 4.0) is not available, returns the same value as |
|
|
|
* (part of OpenGL 4.0) is not available, returns the same value as |
|
|
|
* @ref maxSeparateAttributes(). |
|
|
|
* @ref maxSeparateAttributes(). |
|
|
|
* @see @fn_gl{Get} with @def_gl{MAX_TRANSFORM_FEEDBACK_BUFFERS} |
|
|
|
* @see @fn_gl{Get} with @def_gl{MAX_TRANSFORM_FEEDBACK_BUFFERS} |
|
|
|
* @requires_gl Use @ref maxSeparateAttributes() in OpenGL ES. |
|
|
|
* @requires_gl Use @ref maxSeparateAttributes() in OpenGL ES and |
|
|
|
|
|
|
|
* WebGL. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static Int maxBuffers(); |
|
|
|
static Int maxBuffers(); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
@ -150,7 +152,7 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* |
|
|
|
* |
|
|
|
* Creates new OpenGL transform feedback object. If |
|
|
|
* Creates new OpenGL transform feedback object. If |
|
|
|
* @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* supported, the transform feedback object is created on first use. |
|
|
|
* available, the transform feedback object is created on first use. |
|
|
|
* @see @fn_gl{CreateTransformFeedbacks}, eventually |
|
|
|
* @see @fn_gl{CreateTransformFeedbacks}, eventually |
|
|
|
* @fn_gl{GenTransformFeedbacks} |
|
|
|
* @fn_gl{GenTransformFeedbacks} |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -219,8 +221,8 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* @brief Attach range of buffer |
|
|
|
* @brief Attach range of buffer |
|
|
|
* @return Reference to self (for method chaining) |
|
|
|
* @return Reference to self (for method chaining) |
|
|
|
* |
|
|
|
* |
|
|
|
* The @p offset parameter must be aligned to 4 bytes. If on OpenGL ES |
|
|
|
* The @p offset parameter must be aligned to 4 bytes. If |
|
|
|
* or @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* available, the transform feedback object is bound (if not already) |
|
|
|
* available, the transform feedback object is bound (if not already) |
|
|
|
* and the operation is then done equivalently to |
|
|
|
* and the operation is then done equivalently to |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, GLintptr, GLsizeiptr). |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, GLintptr, GLsizeiptr). |
|
|
|
@ -238,9 +240,9 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* @brief Attach buffer |
|
|
|
* @brief Attach buffer |
|
|
|
* @return Reference to self (for method chaining) |
|
|
|
* @return Reference to self (for method chaining) |
|
|
|
* |
|
|
|
* |
|
|
|
* If on OpenGL ES or @extension{ARB,direct_state_access} (part of |
|
|
|
* If @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* OpenGL 4.5) is not available, the transform feedback object is bound |
|
|
|
* available, the transform feedback object is bound (if not already) |
|
|
|
* (if not already) and the operation is then done equivalently to |
|
|
|
* and the operation is then done equivalently to |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt). |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt). |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
@ -262,10 +264,10 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* range of indices must respect @ref maxBuffers() (@ref maxSeparateComponents() |
|
|
|
* range of indices must respect @ref maxBuffers() (@ref maxSeparateComponents() |
|
|
|
* in OpenGL ES or if @extension{ARB,transform_feedback3} (part of |
|
|
|
* in OpenGL ES or if @extension{ARB,transform_feedback3} (part of |
|
|
|
* OpenGL 4.0) is not available). The offsets must be aligned to 4 |
|
|
|
* OpenGL 4.0) is not available). The offsets must be aligned to 4 |
|
|
|
* bytes. All the buffers must have allocated data store. If on OpenGL |
|
|
|
* bytes. All the buffers must have allocated data store. If |
|
|
|
* ES or @extension{ARB,direct_state_access} (part of OpenGL 4.5) is |
|
|
|
* @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* not available, the transform feedback object is bound (if not |
|
|
|
* available, the transform feedback object is bound (if not already) |
|
|
|
* already) and the operation is then done equivalently to |
|
|
|
* and the operation is then done equivalently to |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, std::initializer_list<std::tuple<Buffer*, GLintptr, GLsizeiptr>>). |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, std::initializer_list<std::tuple<Buffer*, GLintptr, GLsizeiptr>>). |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
@ -285,10 +287,10 @@ class MAGNUM_EXPORT TransformFeedback: public AbstractObject { |
|
|
|
* detached. The range of indices must respect @ref maxBuffers() |
|
|
|
* detached. The range of indices must respect @ref maxBuffers() |
|
|
|
* (@ref maxSeparateComponents() in OpenGL ES or if |
|
|
|
* (@ref maxSeparateComponents() in OpenGL ES or if |
|
|
|
* @extension{ARB,transform_feedback3} (part of OpenGL 4.0) is not |
|
|
|
* @extension{ARB,transform_feedback3} (part of OpenGL 4.0) is not |
|
|
|
* available). All the buffers must have allocated data store. If on |
|
|
|
* available). All the buffers must have allocated data store. If |
|
|
|
* OpenGL ES or @extension{ARB,direct_state_access} (part of OpenGL |
|
|
|
* @extension{ARB,direct_state_access} (part of OpenGL 4.5) is not |
|
|
|
* 4.5) is not available, the transform feedback object is bound (if |
|
|
|
* available, the transform feedback object is bound (if not already) |
|
|
|
* not already) and the operation then is done equivalently to |
|
|
|
* and the operation then is done equivalently to |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, std::initializer_list<Buffer*>). |
|
|
|
* @ref Buffer::bind(Buffer::Target, UnsignedInt, std::initializer_list<Buffer*>). |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @note This function is meant to be used only internally from |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
* @ref AbstractShaderProgram subclasses. See its documentation |
|
|
|
|