blob: bb5c212205c9e037148f5fb9d761f471a40b6273 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QOpenGLContext>
#include <QSurfaceFormat>
#include <QWidget>
#include <QtOpenGL/QOpenGLDebugLogger>
namespace src_gui_opengl_qopengldebug {
struct LogHandler : public QObject
{
Q_OBJECT
public slots:
static bool handleLoggedMessage() { return true; };
};
struct SnippetWrapper : public QObject
{
Q_OBJECT
void wrapper1(LogHandler *receiver);
const QWidget *receiver;
};
void wrapper0() {
//! [0]
GLenum error = GL_NO_ERROR;
do {
error = glGetError();
if (error != GL_NO_ERROR) {
// handle the error
}
} while (error != GL_NO_ERROR);
//! [0]
//! [1]
QSurfaceFormat format;
// asks for a OpenGL 3.2 debug context using the Core profile
format.setMajorVersion(3);
format.setMinorVersion(2);
format.setProfile(QSurfaceFormat::CoreProfile);
format.setOption(QSurfaceFormat::DebugContext);
QOpenGLContext *context = new QOpenGLContext;
context->setFormat(format);
context->create();
//! [1]
} // wrapper0
void SnippetWrapper::wrapper1(LogHandler *receiver) {
//! [2]
QOpenGLContext *ctx = QOpenGLContext::currentContext();
QOpenGLDebugLogger *logger = new QOpenGLDebugLogger(this);
logger->initialize(); // initializes in the current context, i.e. ctx
//! [2]
//! [3]
ctx->hasExtension(QByteArrayLiteral("GL_KHR_debug"));
//! [3]
//! [4]
const QList<QOpenGLDebugMessage> messages = logger->loggedMessages();
for (const QOpenGLDebugMessage &message : messages)
qDebug() << message;
//! [4]
//! [5]
connect(logger, &QOpenGLDebugLogger::messageLogged, receiver, &LogHandler::handleLoggedMessage);
logger->startLogging();
//! [5]
//! [6]
QOpenGLDebugMessage message =
QOpenGLDebugMessage::createApplicationMessage(QStringLiteral("Custom message"));
logger->logMessage(message);
//! [6]
} // SnippetWrapper::wrapper1
} // src_gui_opengl_qopengldebug
|