2 #include <QOffscreenSurface>
3 #include <QOpenGLContext>
5 #include <QSurfaceFormat>
9 QGLWidget *global_share_widget = nullptr;
13 QSurface *create_surface()
16 fmt.setDepthBufferSize(0);
17 fmt.setStencilBufferSize(0);
18 fmt.setProfile(QSurfaceFormat::CoreProfile);
19 fmt.setMajorVersion(4);
20 fmt.setMinorVersion(5);
21 fmt.setSwapInterval(0);
22 QOffscreenSurface *surface = new QOffscreenSurface;
23 surface->setFormat(fmt);
25 if (!surface->isValid()) {
26 fprintf(stderr, "ERROR: surface not valid!\n");
32 QSurface *create_surface(const QSurfaceFormat &format)
34 QOffscreenSurface *surface = new QOffscreenSurface;
35 surface->setFormat(format);
37 if (!surface->isValid()) {
38 fprintf(stderr, "ERROR: surface not valid!\n");
44 QSurface *create_surface_with_same_format(const QSurface *surface)
46 return create_surface(surface->format());
49 QOpenGLContext *create_context(const QSurface *surface)
51 QOpenGLContext *context = new QOpenGLContext;
52 context->setShareContext(global_share_widget->context()->contextHandle());
53 context->setFormat(surface->format());
58 bool make_current(QOpenGLContext *context, QSurface *surface)
60 return context->makeCurrent(surface);
63 void delete_context(QOpenGLContext *context)