Browse Source

First-class WebGL support, part 12: reduced transform feedback functionality.

pull/107/head
Vladimír Vondruš 11 years ago
parent
commit
a7806d97ec
  1. 40
      src/Magnum/TransformFeedback.h

40
src/Magnum/TransformFeedback.h

@ -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

Loading…
Cancel
Save