PrevUpHomeNext

Transform feedback

#include <oglplus/transform_feedback.hpp>

Common transform feedback operations

template <>
class ObjCommonOps<tag::TransformFeedback>
 : public TransformFeedbackName
{
public:
#if GL_VERSION_4_0 || GL_ARB_transform_feedback2
	typedef TransformFeedbackTarget Target; 1

	static TransformFeedbackName Binding(TransformFeedbackTarget target); 2
	static void Bind(
		TransformFeedbackTarget target,
		TransformFeedbackName transform_feedback
	); 3

	void Bind(TransformFeedbackTarget target) const; 4
#endif
	static void Begin(TransformFeedbackPrimitiveType mode); 5
	static void BeginPoints(void); 6
	static void BeginLines(void); 7
	static void BeginTriangles(void); 8

	static void End(void); 9

	static void Pause(void); 10

	static void Resume(void); 11

	typedef TransformFeedbackActivator Activator;
	typedef TransformFeedbackPauser Pauser;
};

1

Transform feedback bind target.

2

Returns the transform feedback object currently bound to the specified target. See glGetIntegerv.

3

Binds the specified transform_feedback to the specified target. See glBindTransformFeedback.

4

Binds this transform feedback to the specified target. See glBindTransformFeedback.

5

Begins transform feedback in the specified mode. See glBeginTransformFeedback.

[Note] Note

Consider using an instance of Activator class for more robustness.

6

See GL_POINTS.

7

See GL_LINES.

8

See GL_TRIANGLES.

9

Ends the currently active transform feedback. See glEndTransformFeedback.

10

Pauses currently active transform feedback. See glPauseTransformFeedback.

[Note] Note

Consider using an instance of Pauser class for more robustness.

11

Resumes currently paused transform feedback. See glResumeTransformFeedback.

Definition

#if GL_VERSION_4_0 || GL_ARB_transform_feedback2
typedef ObjectOps<tag::ImplicitSel, tag::TransformFeedback> 1
	TransformFeedbackOps;

typedef Object<TransformFeedbackOps> TransformFeedback;
#endif

typedef ObjectZero<ObjZeroOps<tag::ImplicitSel, tag::TransformFeedback>> 2
	DefaultTransformFeedback;

1

Indirectly inherits from ObjCommonOps<tag::TransformFeedback>

2

Indirectly inherits from ObjCommonOps<tag::TransformFeedback>

Activator

class TransformFeedbackActivator
{
public:
	TransformFeedbackActivator(const TransformFeedbackActivator&) = delete;
	TransformFeedbackActivator(TransformFeedbackActivator&& tmp);

	TransformFeedbackActivator(TransformFeedbackPrimitiveType mode); 1

	~TransformFeedbackActivator(void) 2
	noexcept;

	void Finish(void); 3
};

1

Begins transform feedback in the specified mode. See glBeginTransformFeedback.

2

Ends currently active transform feedback. See glEndTransformFeedback.

3

Explicitly ends the currently active transform feedback. See glEndTransformFeedback.

Pauser

class TransformFeedbackPauser
{
public:
	TransformFeedbackPauser(const TransformFeedbackPauser&) = delete;
	TransformFeedbackPauser(TransformFeedbackPauser&& tmp);

	TransformFeedbackPauser(void); 1

	~TransformFeedbackPauser(void) 2
	noexcept;

	void Resume(void); 3
};

1

Pauses the currenly active transform feedback. See glPauseTransformFeedback.

2

Resumes the currently paused transform feedback. See glResumeTransformFeedback.

3

Explicitly resumes the currently paused transform feedback. See glResumeTransformFeedback.

Target

#include <oglplus/transform_feedback_target.hpp>

enum class TransformFeedbackTarget : GLenum
{
	TransformFeedback = GL_TRANSFORM_FEEDBACK
};

template <>
Range<TransformFeedbackTarget> EnumValueRange<TransformFeedbackTarget>(void);

StrCRef EnumValueName(TransformFeedbackTarget);

Target to class

#if !OGLPLUS_NO_ENUM_VALUE_CLASSES
namespace enums {

template <typename Base, template<TransformFeedbackTarget> class Transform>
class EnumToClass<Base, TransformFeedbackTarget, Transform> 1
 : public Base
{
public:
	EnumToClass(void);
	EnumToClass(Base&& base);

	Transform<TransformFeedbackTarget::TransformFeedback>
		TransformFeedback;
};

} // namespace enums
#endif

1

Specialization of EnumToClass for the TransformFeedbackTarget enumeration.

Mode

#include <oglplus/transform_feedback_mode.hpp>

enum class TransformFeedbackMode : GLenum
{
	InterleavedAttribs = GL_INTERLEAVED_ATTRIBS,
	SeparateAttribs    = GL_SEPARATE_ATTRIBS
};

template <>
Range<TransformFeedbackMode> EnumValueRange<TransformFeedbackMode>(void);

StrCRef EnumValueName(TransformFeedbackMode);

Primitive type

#include <oglplus/transform_feedback_primitive_type.hpp>

enum class TransformFeedbackPrimitiveType : GLenum
{
	Triangles = GL_TRIANGLES,
	Lines     = GL_LINES,
	Points    = GL_POINTS
};

template <>
Range<TransformFeedbackPrimitiveType> EnumValueRange<TransformFeedbackPrimitiveType>(void);

StrCRef EnumValueName(TransformFeedbackPrimitiveType);

PrevUpHomeNext