blob: e50c56942a2140b2f0b33b251099e284e138bbfd (
plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | // Copyright (C) 2014 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Sean Harmer <sean.harmer@kdab.com>// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QOPENGLVERTEXARRAYOBJECT_H#define QOPENGLVERTEXARRAYOBJECT_H#include <QtOpenGL/qtopenglglobal.h>#ifndef QT_NO_OPENGL#include <QtCore/QObject>#include <QtGui/qopengl.h> QT_BEGIN_NAMESPACE class QOpenGLVertexArrayObjectPrivate;class Q_OPENGL_EXPORT QOpenGLVertexArrayObject :public QObject { Q_OBJECT public:explicitQOpenGLVertexArrayObject(QObject* parent =nullptr);~QOpenGLVertexArrayObject();boolcreate();voiddestroy();boolisCreated()const; GLuint objectId()const;voidbind();voidrelease();class Binder {public:inlineBinder(QOpenGLVertexArrayObject *v):vao(v){Q_ASSERT(v);if(vao->isCreated() || vao->create()) vao->bind();}inline~Binder(){release();}inlinevoidrelease(){ vao->release();}inlinevoidrebind(){ vao->bind();}private:Q_DISABLE_COPY(Binder) QOpenGLVertexArrayObject *vao;};private:Q_DISABLE_COPY(QOpenGLVertexArrayObject)Q_DECLARE_PRIVATE(QOpenGLVertexArrayObject)Q_PRIVATE_SLOT(d_func(),void_q_contextAboutToBeDestroyed())QOpenGLVertexArrayObject(QOpenGLVertexArrayObjectPrivate &dd);}; QT_END_NAMESPACE #endif#endif// QOPENGLVERTEXARRAYOBJECT_H
|