]> git.sesse.net Git - nageru/blob - context.cpp
Various Makefile tweaks (mostly related to cleaning moc files).
[nageru] / context.cpp
1 #include <stdio.h>
2
3 #include <QGL>
4 #include <QOffscreenSurface>
5 #include <QOpenGLContext>
6 #include <QSurface>
7 #include <QSurfaceFormat>
8
9 QGLWidget *global_share_widget = nullptr;
10
11 QSurface *create_surface(const QSurfaceFormat &format)
12 {
13         QOffscreenSurface *surface = new QOffscreenSurface;
14         surface->setFormat(format);
15 //      QWindow *surface = new QWindow;
16         surface->create();
17         if (!surface->isValid()) {
18                 printf("ERROR: surface not valid!\n");
19 //              abort();
20         }
21         return surface;
22 }
23
24 QSurface *create_surface_with_same_format(const QSurface *surface)
25 {
26         return create_surface(surface->format());
27 }
28
29 QOpenGLContext *create_context(const QSurface *surface)
30 {
31         QOpenGLContext *context = new QOpenGLContext;
32         context->setShareContext(global_share_widget->context()->contextHandle());
33         context->setFormat(surface->format());
34         context->create();
35         return context;
36 }
37
38 bool make_current(QOpenGLContext *context, QSurface *surface)
39 {
40         return context->makeCurrent(surface);
41 }
42
43 void delete_context(QOpenGLContext *context)
44 {
45         delete context;
46 }