Binder Class

class QOpenGLVertexArrayObject::Binder

The QOpenGLVertexArrayObject::Binder class is a convenience class to help with the binding and releasing of OpenGL Vertex Array Objects. More...

Note: All functions in this class are reentrant.

Public Functions

Binder(QOpenGLVertexArrayObject *v)
void rebind()
void release()

Detailed Description

QOpenGLVertexArrayObject::Binder is a simple convenience class that can be used to assist with the binding and releasing of QOpenGLVertexArrayObject instances. This class is to QOpenGLVertexArrayObject as QMutexLocker is to QMutex.

This class implements the RAII principle which helps to ensure behavior in complex code or in the presence of exceptions.

The constructor of this class accepts a QOpenGLVertexArrayObject (VAO) as an argument and attempts to bind the VAO, calling QOpenGLVertexArrayObject::create() if necessary. The destructor of this class calls QOpenGLVertexArrayObject::release() which unbinds the VAO.

If needed the VAO can be temporarily unbound with the release() function and bound once more with rebind().

See also QOpenGLVertexArrayObject.

Member Function Documentation

Binder::Binder(QOpenGLVertexArrayObject *v)

Creates a QOpenGLVertexArrayObject::Binder object and binds v by calling QOpenGLVertexArrayObject::bind(). If necessary it first calls QOpenGLVertexArrayObject::create().

[noexcept] Binder::~Binder()

Destroys the QOpenGLVertexArrayObject::Binder and releases the associated vertex array object.

void Binder::rebind()

Can be used to rebind the associated vertex array object.

See also release().

void Binder::release()

Can be used to temporarily release the associated vertex array object.

See also rebind().

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.