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