#include <stdio.h>
-#include <stdlib.h>
-#include <QOpenGLContext>
+#include <string>
+
+#include <QGL>
#include <QOffscreenSurface>
-#include <QWindow>
+#include <QOpenGLContext>
+#include <QSurface>
+#include <QSurfaceFormat>
+
+QGLWidget *global_share_widget = nullptr;
+bool using_egl = false;
+
+using namespace std;
QSurface *create_surface(const QSurfaceFormat &format)
{
QOffscreenSurface *surface = new QOffscreenSurface;
surface->setFormat(format);
-// QWindow *surface = new QWindow;
surface->create();
if (!surface->isValid()) {
- printf("ERROR: surface not valid!\n");
-// abort();
+ fprintf(stderr, "ERROR: surface not valid!\n");
+ exit(1);
}
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;
+}