7# include <QtGui/qopenglcontext.h>
9#include <QtQuick/qquickwindow.h>
11#include <QtCore/qloggingcategory.h>
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
71static QSurfaceFormat findIdealGLVersion(
int samples)
74 int defaultSamples = fmt.samples();
75 const bool multisampling = samples > 1;
76 fmt.setProfile(QSurfaceFormat::CoreProfile);
80 fmt.setSamples(multisampling ? samples : defaultSamples);
83 if (ctx.create() && ctx.format().version() >= qMakePair(4, 3)) {
84 qCDebug(lcQuick3D,
"Requesting OpenGL 4.3 core context succeeded");
89 fmt.setSamples(defaultSamples);
91 if (ctx.create() && ctx.format().version() >= qMakePair(4, 3)) {
92 qCDebug(lcQuick3D,
"Requesting OpenGL 4.3 core context succeeded without multisampling");
99 fmt.setSamples(multisampling ? samples : defaultSamples);
101 if (ctx.create() && ctx.format().version() >= qMakePair(3, 3)) {
102 qCDebug(lcQuick3D,
"Requesting OpenGL 3.3 core context succeeded");
107 fmt.setSamples(defaultSamples);
109 if (ctx.create() && ctx.format().version() >= qMakePair(3, 3)) {
110 qCDebug(lcQuick3D,
"Requesting OpenGL 3.3 core context succeeded without multisampling");
116 fmt.setVersion(3, 0);
118 fmt.setProfile(QSurfaceFormat::NoProfile);
119 fmt.setSamples(multisampling ? samples : defaultSamples);
121 if (ctx.create() && ctx.format().version() >= qMakePair(3, 0)) {
122 qCDebug(lcQuick3D,
"Requesting OpenGL 3.0 context succeeded");
126 fmt.setSamples(defaultSamples);
128 if (ctx.create() && ctx.format().version() >= qMakePair(3, 0)) {
129 qCDebug(lcQuick3D,
"Requesting OpenGL 3.0 context succeeded without multisampling");
134 qCWarning(lcQuick3D,
"Unable to find ideal GL version.");
138static QSurfaceFormat findIdealGLESVersion(
int samples)
141 int defaultSamples = fmt.samples();
142 const bool multisampling = samples > 1;
145 fmt.setVersion(3, 1);
146 fmt.setRenderableType(QSurfaceFormat::OpenGLES);
147 fmt.setSamples(multisampling ? samples : defaultSamples);
156 qCDebug(lcQuick3D,
"Testing OpenGL ES 3.1");
157 if (ctx.create() && ctx.format().version() >= qMakePair(3, 1)) {
158 qCDebug(lcQuick3D,
"Requesting OpenGL ES 3.1 context succeeded");
162 fmt.setSamples(defaultSamples);
164 if (ctx.create() && ctx.format().version() >= qMakePair(3, 1)) {
165 qCDebug(lcQuick3D,
"Requesting OpenGL ES 3.1 context succeeded without multisampling");
171 fmt.setVersion(3, 0);
172 fmt.setSamples(multisampling ? samples : defaultSamples);
174 qCDebug(lcQuick3D,
"Testing OpenGL ES 3.0");
175 if (ctx.create() && ctx.format().version() >= qMakePair(3, 0)) {
176 qCDebug(lcQuick3D,
"Requesting OpenGL ES 3.0 context succeeded");
180 fmt.setSamples(defaultSamples);
182 if (ctx.create() && ctx.format().version() >= qMakePair(3, 0)) {
183 qCDebug(lcQuick3D,
"Requesting OpenGL ES 3.0 context succeeded without multisampling");
190 qCWarning(lcQuick3D,
"OpenGL ES 3.0 / WebGL 2 is required on WebAssembly.");
192 fmt.setVersion(2, 0);
193 fmt.setSamples(multisampling ? samples : defaultSamples);
195 qCDebug(lcQuick3D,
"Testing OpenGL ES 2.0");
197 qCDebug(lcQuick3D,
"Requesting OpenGL ES 2.0 context succeeded");
201 fmt.setSamples(defaultSamples);
204 qCDebug(lcQuick3D,
"Requesting OpenGL ES 2.0 context succeeded without multisampling");
209 qCWarning(lcQuick3D,
"Unable to find ideal GLES version.");
214
215
216
217QSurfaceFormat QQuick3D::idealSurfaceFormat(
int samples)
219 if (QQuickWindow::graphicsApi() != QSGRendererInterface::OpenGLRhi) {
220 QSurfaceFormat fmt = QSurfaceFormat::defaultFormat();
221 fmt.setSamples(samples);
225 static const QSurfaceFormat f = [samples] {
227 if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL) {
228 fmt = findIdealGLVersion(samples);
230 fmt = findIdealGLESVersion(samples);
232 fmt.setDepthBufferSize(24);
233 fmt.setStencilBufferSize(8);
240 QSurfaceFormat f = QSurfaceFormat::defaultFormat();
Q_STATIC_LOGGING_CATEGORY(lcAccessibilityCore, "qt.accessibility.core")