From 56f3eb299c5e82d5b1576eed0c879475e18d7e0a Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 30 Sep 2014 14:30:00 +0200 Subject: Extend QOpenGLVertexArrayObjectHelper to support glIsVertexArrays This is needed for dynamicgl support in QtWebKit. Change-Id: I4d1769394ccdeaf449cac4f002c03ca8013f62f6 Reviewed-by: Laszlo Agocs --- src/gui/opengl/qopenglvertexarrayobject.cpp | 4 ++++ src/gui/opengl/qopenglvertexarrayobject_p.h | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src/gui') diff --git a/src/gui/opengl/qopenglvertexarrayobject.cpp b/src/gui/opengl/qopenglvertexarrayobject.cpp index ba5b409807..5520dfed08 100644 --- a/src/gui/opengl/qopenglvertexarrayobject.cpp +++ b/src/gui/opengl/qopenglvertexarrayobject.cpp @@ -61,6 +61,7 @@ void qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, helper->GenVertexArrays = ::glGenVertexArrays; helper->DeleteVertexArrays = ::glDeleteVertexArrays; helper->BindVertexArray = ::glBindVertexArray; + helper->IsVertexArray = ::glIsVertexArray; tryARB = false; } else #endif @@ -68,6 +69,7 @@ void qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, helper->GenVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glGenVertexArraysOES"))); helper->DeleteVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glDeleteVertexArraysOES"))); helper->BindVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glBindVertexArrayOES"))); + helper->IsVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glIsVertexArrayOES"))); tryARB = false; } } else if (context->hasExtension(QByteArrayLiteral("GL_APPLE_vertex_array_object")) && @@ -75,6 +77,7 @@ void qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, helper->GenVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glGenVertexArraysAPPLE"))); helper->DeleteVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glDeleteVertexArraysAPPLE"))); helper->BindVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glBindVertexArrayAPPLE"))); + helper->IsVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glIsVertexArrayAPPLE"))); tryARB = false; } @@ -82,6 +85,7 @@ void qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, helper->GenVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glGenVertexArrays"))); helper->DeleteVertexArrays = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glDeleteVertexArrays"))); helper->BindVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glBindVertexArray"))); + helper->IsVertexArray = reinterpret_cast(context->getProcAddress(QByteArrayLiteral("glIsVertexArray"))); } } diff --git a/src/gui/opengl/qopenglvertexarrayobject_p.h b/src/gui/opengl/qopenglvertexarrayobject_p.h index 3c06254baa..366d7ae2f6 100644 --- a/src/gui/opengl/qopenglvertexarrayobject_p.h +++ b/src/gui/opengl/qopenglvertexarrayobject_p.h @@ -67,13 +67,14 @@ public: : GenVertexArrays(Q_NULLPTR) , DeleteVertexArrays(Q_NULLPTR) , BindVertexArray(Q_NULLPTR) + , IsVertexArray(Q_NULLPTR) { qtInitializeVertexArrayObjectHelper(this, context); } inline bool isValid() const { - return GenVertexArrays && DeleteVertexArrays && BindVertexArray; + return GenVertexArrays && DeleteVertexArrays && BindVertexArray && IsVertexArray; } inline void glGenVertexArrays(GLsizei n, GLuint *arrays) const @@ -91,6 +92,11 @@ public: BindVertexArray(array); } + inline GLboolean glIsVertexArray(GLuint array) const + { + return IsVertexArray(array); + } + private: friend void Q_GUI_EXPORT qtInitializeVertexArrayObjectHelper(QOpenGLVertexArrayObjectHelper *helper, QOpenGLContext *context); @@ -98,10 +104,12 @@ private: typedef void (QOPENGLF_APIENTRYP qt_GenVertexArrays_t)(GLsizei n, GLuint *arrays); typedef void (QOPENGLF_APIENTRYP qt_DeleteVertexArrays_t)(GLsizei n, const GLuint *arrays); typedef void (QOPENGLF_APIENTRYP qt_BindVertexArray_t)(GLuint array); + typedef GLboolean (QOPENGLF_APIENTRYP qt_IsVertexArray_t)(GLuint array); qt_GenVertexArrays_t GenVertexArrays; qt_DeleteVertexArrays_t DeleteVertexArrays; qt_BindVertexArray_t BindVertexArray; + qt_IsVertexArray_t IsVertexArray; }; QT_END_NAMESPACE -- cgit v1.2.3