#include <stdio.h>
-#include <stdlib.h>
-#include <QOpenGLContext>
+#include <QGL>
#include <QOffscreenSurface>
-#include <QWindow>
+#include <QOpenGLContext>
+#include <QSurfaceFormat>
+
+class QSurface;
+
+QGLWidget *global_share_widget = nullptr;
QSurface *create_surface(const QSurfaceFormat &format)
{
return surface;
}
-QOpenGLContext *create_context()
+QSurface *create_surface_with_same_format(const QSurface *surface)
+{
+ return create_surface(surface->format());
+}
+
+QOpenGLContext *create_context(const QSurface *surface)
{
QOpenGLContext *context = new QOpenGLContext;
- context->setShareContext(QOpenGLContext::globalShareContext());
+ context->setShareContext(global_share_widget->context()->contextHandle());
+ context->setFormat(surface->format());
context->create();
return context;
}
{
return context->makeCurrent(surface);
}
+
+void delete_context(QOpenGLContext *context)
+{
+ delete context;
+}