summaryrefslogtreecommitdiffstats
path: root/src/render/backends/gl/Qt3DSOpenGLExtensions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backends/gl/Qt3DSOpenGLExtensions.cpp')
-rw-r--r--src/render/backends/gl/Qt3DSOpenGLExtensions.cpp170
1 files changed, 170 insertions, 0 deletions
diff --git a/src/render/backends/gl/Qt3DSOpenGLExtensions.cpp b/src/render/backends/gl/Qt3DSOpenGLExtensions.cpp
new file mode 100644
index 0000000..564ecd5
--- /dev/null
+++ b/src/render/backends/gl/Qt3DSOpenGLExtensions.cpp
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt 3D Studio.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "render/backends/gl/Qt3DSOpenGLExtensions.h"
+
+Qt3DSOpenGLExtensions::Qt3DSOpenGLExtensions()
+ : QAbstractOpenGLExtension(*(new Qt3DSOpenGLExtensionsPrivate))
+{
+}
+
+bool Qt3DSOpenGLExtensions::initializeOpenGLFunctions()
+{
+ if (isInitialized())
+ return true;
+
+ QT_PREPEND_NAMESPACE(QOpenGLContext) *context =
+ QT_PREPEND_NAMESPACE(QOpenGLContext)::currentContext();
+ if (!context) {
+ qWarning("A current OpenGL context is required to resolve functions");
+ return false;
+ }
+
+ Q_D(Qt3DSOpenGLExtensions);
+
+ d->BlendBarrierNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(
+ context->getProcAddress("glBlendBarrierNV"));
+ d->PathGlyphIndexArrayNV = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, const void*, GLbitfield, GLuint, GLsizei, GLuint,
+ GLfloat)>(
+ context->getProcAddress("glPathGlyphIndexArrayNV"));
+ d->PathGlyphIndexRangeNV = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(
+ GLenum, const void*, GLbitfield, GLuint, GLfloat, GLuint[2])>(
+ context->getProcAddress("glPathGlyphIndexRangeNV"));
+ QAbstractOpenGLExtension::initializeOpenGLFunctions();
+ return true;
+}
+
+#if defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2_ANGLE)
+Qt3DSOpenGLES2Extensions::Qt3DSOpenGLES2Extensions()
+{
+}
+
+bool Qt3DSOpenGLES2Extensions::initializeOpenGLFunctions()
+{
+ if (isInitialized())
+ return true;
+
+ QT_PREPEND_NAMESPACE(QOpenGLContext) *context =
+ QT_PREPEND_NAMESPACE(QOpenGLContext)::currentContext();
+ if (!context) {
+ qWarning("A current OpenGL context is required to resolve functions");
+ return false;
+ }
+
+ Q_D(Qt3DSOpenGLExtensions);
+
+#if defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2_ANGLE)
+ d->PatchParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLenum, GLint)>(
+ context->getProcAddress("glPatchParameteriEXT"));
+ d->QueryCounterEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum)>(
+ context->getProcAddress("glQueryCounterEXT"));
+ d->GetQueryObjectui64vEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, GLuint64 *)>(
+ context->getProcAddress("glGetQueryObjectui64vEXT"));
+ d->GenPathsNV = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(
+ GLsizei)>(
+ context->getProcAddress("glGenPathsNV"));
+ d->DeletePathsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLsizei)>(
+ context->getProcAddress("glDeletePathsNV"));
+ d->PathCommandsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLsizei, const GLubyte *, GLsizei, GLenum, const void *)>(
+ context->getProcAddress("glPathCommandsNV"));
+ d->PathGlyphsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, const void *, GLbitfield, GLsizei, GLenum, const void *,
+ GLenum, GLuint, GLfloat)>(
+ context->getProcAddress("glPathGlyphsNV"));
+ d->PathGlyphRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, const void *, GLbitfield, GLuint, GLsizei, GLenum,
+ GLuint, GLfloat)>(
+ context->getProcAddress("glPathGlyphRangeNV"));
+ d->PathParameterfNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, GLfloat)>(
+ context->getProcAddress("glPathParameterfNV"));
+ d->PathStencilDepthOffsetNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLfloat, GLfloat)>(
+ context->getProcAddress("glPathStencilDepthOffsetNV"));
+ d->StencilFillPathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, GLuint)>(
+ context->getProcAddress("glStencilFillPathNV"));
+ d->StencilStrokePathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLint, GLuint)>(
+ context->getProcAddress("glStencilStrokePathNV"));
+ d->StencilFillPathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLsizei, GLenum, const void *, GLuint, GLenum, GLuint, GLenum,
+ const GLfloat *)>(
+ context->getProcAddress("glStencilFillPathInstancedNV"));
+ d->StencilStrokePathInstancedNV
+ = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei, GLenum,
+ const void *, GLuint, GLint, GLuint, GLenum, const GLfloat *)>(
+ context->getProcAddress("glStencilStrokePathInstancedNV"));
+ d->PathCoverDepthFuncNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLenum func)>(
+ context->getProcAddress("glPathCoverDepthFuncNV"));
+ d->CoverFillPathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLsizei, GLenum, const void *, GLuint, GLenum, GLenum,
+ const GLfloat *)>(
+ context->getProcAddress("glCoverFillPathInstancedNV"));
+ d->CoverStrokePathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLsizei, GLenum, const void *, GLuint, GLenum, GLenum,
+ const GLfloat *)>(
+ context->getProcAddress("glCoverStrokePathInstancedNV"));
+ d->GetPathParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLuint, GLenum, GLfloat *)>(
+ context->getProcAddress("glGetPathParameterfvNV"));
+ d->GetPathMetricsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLbitfield, GLsizei, GLenum, const void *, GLuint, GLsizei, GLfloat *)>(
+ context->getProcAddress("glGetPathMetricsNV"));
+ d->GetPathMetricRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLbitfield, GLuint, GLsizei, GLsizei, GLfloat *)>(
+ context->getProcAddress("glGetPathMetricRangeNV"));
+ d->GetPathSpacingNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(
+ GLenum, GLsizei, GLenum, const void *, GLuint, GLfloat, GLfloat, GLenum,
+ GLfloat *)>(
+ context->getProcAddress("glGetPathSpacingNV"));
+ d->BindVertexArrayOES = reinterpret_cast<void (QOPENGLF_APIENTRYP)
+ (GLuint)>(
+ context->getProcAddress("glBindVertexArrayOES"));
+ d->DeleteVertexArraysOES = reinterpret_cast<void (QOPENGLF_APIENTRYP)
+ (GLsizei, const GLuint *)>(
+ context->getProcAddress("glDeleteVertexArraysOES"));
+ d->GenVertexArraysOES = reinterpret_cast<void (QOPENGLF_APIENTRYP)
+ (GLsizei, GLuint *)>(
+ context->getProcAddress("glGenVertexArraysOES"));
+ d->IsVertexArrayOES = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)
+ (GLuint)>(
+ context->getProcAddress("glIsVertexArrayOES"));
+#endif
+ Qt3DSOpenGLExtensions::initializeOpenGLFunctions();
+ return true;
+}
+#endif // QT_OPENGL_ES