]> git.sesse.net Git - nageru/blob - context.cpp
Release Nageru 1.7.2.
[nageru] / context.cpp
1 #include <stdio.h>
2
3 #include <string>
4
5 #include <QGL>
6 #include <QOffscreenSurface>
7 #include <QOpenGLContext>
8 #include <QSurface>
9 #include <QSurfaceFormat>
10
11 QGLWidget *global_share_widget = nullptr;
12 bool using_egl = false;
13
14 using namespace std;
15
16 QSurface *create_surface(const QSurfaceFormat &format)
17 {
18         QOffscreenSurface *surface = new QOffscreenSurface;
19         surface->setFormat(format);
20         surface->create();
21         if (!surface->isValid()) {
22                 fprintf(stderr, "ERROR: surface not valid!\n");
23                 exit(1);
24         }
25         return surface;
26 }
27
28 QSurface *create_surface_with_same_format(const QSurface *surface)
29 {
30         return create_surface(surface->format());
31 }
32
33 QOpenGLContext *create_context(const QSurface *surface)
34 {
35         QOpenGLContext *context = new QOpenGLContext;
36         context->setShareContext(global_share_widget->context()->contextHandle());
37         context->setFormat(surface->format());
38         context->create();
39         return context;
40 }
41
42 bool make_current(QOpenGLContext *context, QSurface *surface)
43 {
44         return context->makeCurrent(surface);
45 }
46
47 void delete_context(QOpenGLContext *context)
48 {
49         delete context;
50 }