Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | class QOpenGLShaderPrivate : public QObjectPrivate | - |
4 | { | - |
5 | inline QOpenGLShader* q_func() { return static_cast<QOpenGLShader *>(q_ptr); } inline const QOpenGLShader* q_func() const { return static_cast<const QOpenGLShader *>(q_ptr); } friend class QOpenGLShader; | - |
6 | public: | - |
7 | QOpenGLShaderPrivate(QOpenGLContext *ctx, QOpenGLShader::ShaderType type) | - |
8 | : shaderGuard(0) | - |
9 | , shaderType(type) | - |
10 | , compiled(false) | - |
11 | , glfuncs(new QOpenGLFunctions(ctx)) | - |
12 | { | - |
13 | } | 0 |
14 | ~QOpenGLShaderPrivate(); | - |
15 | | - |
16 | QOpenGLSharedResourceGuard *shaderGuard; | - |
17 | QOpenGLShader::ShaderType shaderType; | - |
18 | bool compiled; | - |
19 | QString log; | - |
20 | | - |
21 | QOpenGLFunctions *glfuncs; | - |
22 | | - |
23 | bool create(); | - |
24 | bool compile(QOpenGLShader *q); | - |
25 | void deleteShader(); | - |
26 | }; | - |
27 | | - |
28 | namespace { | - |
29 | void freeShaderFunc(QOpenGLFunctions *funcs, GLuint id) | - |
30 | { | - |
31 | funcs->glDeleteShader(id); | - |
32 | } | 0 |
33 | } | - |
34 | | - |
35 | QOpenGLShaderPrivate::~QOpenGLShaderPrivate() | - |
36 | { | - |
37 | delete glfuncs; | - |
38 | if (shaderGuard) never evaluated: shaderGuard | 0 |
39 | shaderGuard->free(); never executed: shaderGuard->free(); | 0 |
40 | } | 0 |
41 | | - |
42 | bool QOpenGLShaderPrivate::create() | - |
43 | { | - |
44 | QOpenGLContext *context = const_cast<QOpenGLContext *>(QOpenGLContext::currentContext()); | - |
45 | if (!context) never evaluated: !context | 0 |
46 | return false; never executed: return false; | 0 |
47 | GLuint shader; | - |
48 | if (shaderType == QOpenGLShader::Vertex) never evaluated: shaderType == QOpenGLShader::Vertex | 0 |
49 | shader = glfuncs->glCreateShader(0x8B31); never executed: shader = glfuncs->glCreateShader(0x8B31); | 0 |
50 | else | - |
51 | shader = glfuncs->glCreateShader(0x8B30); never executed: shader = glfuncs->glCreateShader(0x8B30); | 0 |
52 | if (!shader) { | 0 |
53 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 200, __PRETTY_FUNCTION__).warning() << "QOpenGLShader: could not create shader"; | - |
54 | return false; never executed: return false; | 0 |
55 | } | - |
56 | shaderGuard = new QOpenGLSharedResourceGuard(context, shader, freeShaderFunc); | - |
57 | return true; never executed: return true; | 0 |
58 | } | - |
59 | | - |
60 | bool QOpenGLShaderPrivate::compile(QOpenGLShader *q) | - |
61 | { | - |
62 | GLuint shader = shaderGuard ? shaderGuard->id() : 0; never evaluated: shaderGuard | 0 |
63 | if (!shader) | 0 |
64 | return false; never executed: return false; | 0 |
65 | | - |
66 | | - |
67 | glfuncs->glCompileShader(shader); | - |
68 | GLint value = 0; | - |
69 | | - |
70 | | - |
71 | glfuncs->glGetShaderiv(shader, 0x8B81, &value); | - |
72 | compiled = (value != 0); | - |
73 | | - |
74 | if (!compiled) { never evaluated: !compiled | 0 |
75 | | - |
76 | QString name = q->objectName(); | - |
77 | | - |
78 | const char *types[] = { | - |
79 | "Fragment", | - |
80 | "Vertex", | - |
81 | "Geometry", | - |
82 | "" | - |
83 | }; | - |
84 | | - |
85 | const char *type = types[3]; | - |
86 | if (shaderType == QOpenGLShader::Fragment) never evaluated: shaderType == QOpenGLShader::Fragment | 0 |
87 | type = types[0]; never executed: type = types[0]; | 0 |
88 | else if (shaderType == QOpenGLShader::Vertex) never evaluated: shaderType == QOpenGLShader::Vertex | 0 |
89 | type = types[1]; never executed: type = types[1]; | 0 |
90 | | - |
91 | | - |
92 | GLint infoLogLength = 0; | - |
93 | GLint sourceCodeLength = 0; | - |
94 | char *logBuffer = 0; | - |
95 | char *sourceCodeBuffer = 0; | - |
96 | | - |
97 | | - |
98 | glfuncs->glGetShaderiv(shader, 0x8B84, &infoLogLength); | - |
99 | | - |
100 | if (infoLogLength > 1) { never evaluated: infoLogLength > 1 | 0 |
101 | GLint temp; | - |
102 | logBuffer = new char [infoLogLength]; | - |
103 | glfuncs->glGetShaderInfoLog(shader, infoLogLength, &temp, logBuffer); | - |
104 | } | 0 |
105 | | - |
106 | | - |
107 | glfuncs->glGetShaderiv(shader, 0x8B88, &sourceCodeLength); | - |
108 | | - |
109 | if (sourceCodeLength > 1) { never evaluated: sourceCodeLength > 1 | 0 |
110 | GLint temp; | - |
111 | sourceCodeBuffer = new char [sourceCodeLength]; | - |
112 | glfuncs->glGetShaderSource(shader, sourceCodeLength, &temp, sourceCodeBuffer); | - |
113 | } | 0 |
114 | | - |
115 | if (logBuffer) never evaluated: logBuffer | 0 |
116 | log = QString::fromLatin1(logBuffer); never executed: log = QString::fromLatin1(logBuffer); | 0 |
117 | else | - |
118 | log = QLatin1String("failed"); never executed: log = QLatin1String("failed"); | 0 |
119 | | - |
120 | if (name.isEmpty()) never evaluated: name.isEmpty() | 0 |
121 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 268, __PRETTY_FUNCTION__).warning("QOpenGLShader::compile(%s): %s", type, QString(log).toLocal8Bit().constData()); never executed: QMessageLogger("opengl/qopenglshaderprogram.cpp", 268, __PRETTY_FUNCTION__).warning("QOpenGLShader::compile(%s): %s", type, QString(log).toLocal8Bit().constData()); | 0 |
122 | else | - |
123 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 270, __PRETTY_FUNCTION__).warning("QOpenGLShader::compile(%s)[%s]: %s", type, QString(name).toLocal8Bit().constData(), QString(log).toLocal8Bit().constData()); never executed: QMessageLogger("opengl/qopenglshaderprogram.cpp", 270, __PRETTY_FUNCTION__).warning("QOpenGLShader::compile(%s)[%s]: %s", type, QString(name).toLocal8Bit().constData(), QString(log).toLocal8Bit().constData()); | 0 |
124 | | - |
125 | | - |
126 | if (sourceCodeBuffer) { never evaluated: sourceCodeBuffer | 0 |
127 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 274, __PRETTY_FUNCTION__).warning("*** Problematic %s shader source code ***", type); | - |
128 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 275, __PRETTY_FUNCTION__).warning() << QString(QString::fromLatin1(sourceCodeBuffer)).toLocal8Bit().constData(); | - |
129 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 276, __PRETTY_FUNCTION__).warning("***"); | - |
130 | } | 0 |
131 | | - |
132 | | - |
133 | delete [] logBuffer; | - |
134 | delete [] sourceCodeBuffer; | - |
135 | } | 0 |
136 | | - |
137 | return compiled; never executed: return compiled; | 0 |
138 | } | - |
139 | | - |
140 | void QOpenGLShaderPrivate::deleteShader() | - |
141 | { | - |
142 | if (shaderGuard) { never evaluated: shaderGuard | 0 |
143 | shaderGuard->free(); | - |
144 | shaderGuard = 0; | - |
145 | } | 0 |
146 | } | 0 |
147 | QOpenGLShader::QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent) | - |
148 | : QObject(*new QOpenGLShaderPrivate(QOpenGLContext::currentContext(), type), parent) | - |
149 | { | - |
150 | QOpenGLShaderPrivate * const d = d_func(); | - |
151 | d->create(); | - |
152 | } | 0 |
153 | | - |
154 | | - |
155 | | - |
156 | | - |
157 | | - |
158 | | - |
159 | QOpenGLShader::~QOpenGLShader() | - |
160 | { | - |
161 | } | - |
162 | | - |
163 | | - |
164 | | - |
165 | | - |
166 | QOpenGLShader::ShaderType QOpenGLShader::shaderType() const | - |
167 | { | - |
168 | const QOpenGLShaderPrivate * const d = d_func(); | - |
169 | return d->shaderType; never executed: return d->shaderType; | 0 |
170 | } | - |
171 | | - |
172 | | - |
173 | | - |
174 | | - |
175 | | - |
176 | | - |
177 | static const char qualifierDefines[] = | - |
178 | "#define lowp\n" | - |
179 | "#define mediump\n" | - |
180 | "#define highp\n"; | - |
181 | bool QOpenGLShader::compileSourceCode(const char *source) | - |
182 | { | - |
183 | QOpenGLShaderPrivate * const d = d_func(); | - |
184 | if (d->shaderGuard && d->shaderGuard->id()) { never evaluated: d->shaderGuard never evaluated: d->shaderGuard->id() | 0 |
185 | QVarLengthArray<const char *, 4> src; | - |
186 | QVarLengthArray<GLint, 4> srclen; | - |
187 | int headerLen = 0; | - |
188 | while (source && source[headerLen] == '#') { never evaluated: source[headerLen] == '#' | 0 |
189 | | - |
190 | | - |
191 | | - |
192 | if (qstrncmp(source + headerLen, "#version", 8) != 0 && never evaluated: qstrncmp(source + headerLen, "#version", 8) != 0 | 0 |
193 | qstrncmp(source + headerLen, "#extension", 10) != 0) { never evaluated: qstrncmp(source + headerLen, "#extension", 10) != 0 | 0 |
194 | break; | 0 |
195 | } | - |
196 | while (source[headerLen] != '\0' && source[headerLen] != '\n') never evaluated: source[headerLen] != '\0' never evaluated: source[headerLen] != '\n' | 0 |
197 | ++headerLen; never executed: ++headerLen; | 0 |
198 | if (source[headerLen] == '\n') never evaluated: source[headerLen] == '\n' | 0 |
199 | ++headerLen; never executed: ++headerLen; | 0 |
200 | } | 0 |
201 | if (headerLen > 0) { never evaluated: headerLen > 0 | 0 |
202 | src.append(source); | - |
203 | srclen.append(GLint(headerLen)); | - |
204 | } | 0 |
205 | | - |
206 | src.append(qualifierDefines); | - |
207 | srclen.append(GLint(sizeof(qualifierDefines) - 1)); | - |
208 | | - |
209 | | - |
210 | | - |
211 | | - |
212 | | - |
213 | | - |
214 | | - |
215 | src.append(source + headerLen); | - |
216 | srclen.append(GLint(qstrlen(source + headerLen))); | - |
217 | d->glfuncs->glShaderSource(d->shaderGuard->id(), src.size(), src.data(), srclen.data()); | - |
218 | return d->compile(this); never executed: return d->compile(this); | 0 |
219 | } else { | - |
220 | return false; never executed: return false; | 0 |
221 | } | - |
222 | } | - |
223 | bool QOpenGLShader::compileSourceCode(const QByteArray& source) | - |
224 | { | - |
225 | return compileSourceCode(source.constData()); never executed: return compileSourceCode(source.constData()); | 0 |
226 | } | - |
227 | bool QOpenGLShader::compileSourceCode(const QString& source) | - |
228 | { | - |
229 | return compileSourceCode(source.toLatin1().constData()); never executed: return compileSourceCode(source.toLatin1().constData()); | 0 |
230 | } | - |
231 | bool QOpenGLShader::compileSourceFile(const QString& fileName) | - |
232 | { | - |
233 | QFile file(fileName); | - |
234 | if (!file.open(QFile::ReadOnly)) { never evaluated: !file.open(QFile::ReadOnly) | 0 |
235 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 439, __PRETTY_FUNCTION__).warning() << "QOpenGLShader: Unable to open file" << fileName; | - |
236 | return false; never executed: return false; | 0 |
237 | } | - |
238 | | - |
239 | QByteArray contents = file.readAll(); | - |
240 | return compileSourceCode(contents.constData()); never executed: return compileSourceCode(contents.constData()); | 0 |
241 | } | - |
242 | | - |
243 | | - |
244 | | - |
245 | | - |
246 | | - |
247 | | - |
248 | QByteArray QOpenGLShader::sourceCode() const | - |
249 | { | - |
250 | const QOpenGLShaderPrivate * const d = d_func(); | - |
251 | GLuint shader = d->shaderGuard ? d->shaderGuard->id() : 0; never evaluated: d->shaderGuard | 0 |
252 | if (!shader) | 0 |
253 | return QByteArray(); never executed: return QByteArray(); | 0 |
254 | GLint size = 0; | - |
255 | d->glfuncs->glGetShaderiv(shader, 0x8B88, &size); | - |
256 | if (size <= 0) never evaluated: size <= 0 | 0 |
257 | return QByteArray(); never executed: return QByteArray(); | 0 |
258 | GLint len = 0; | - |
259 | char *source = new char [size]; | - |
260 | d->glfuncs->glGetShaderSource(shader, size, &len, source); | - |
261 | QByteArray src(source); | - |
262 | delete [] source; | - |
263 | return src; never executed: return src; | 0 |
264 | } | - |
265 | | - |
266 | | - |
267 | | - |
268 | | - |
269 | | - |
270 | | - |
271 | bool QOpenGLShader::isCompiled() const | - |
272 | { | - |
273 | const QOpenGLShaderPrivate * const d = d_func(); | - |
274 | return d->compiled; never executed: return d->compiled; | 0 |
275 | } | - |
276 | | - |
277 | | - |
278 | | - |
279 | | - |
280 | | - |
281 | | - |
282 | QString QOpenGLShader::log() const | - |
283 | { | - |
284 | const QOpenGLShaderPrivate * const d = d_func(); | - |
285 | return d->log; never executed: return d->log; | 0 |
286 | } | - |
287 | | - |
288 | | - |
289 | | - |
290 | | - |
291 | | - |
292 | | - |
293 | GLuint QOpenGLShader::shaderId() const | - |
294 | { | - |
295 | const QOpenGLShaderPrivate * const d = d_func(); | - |
296 | return d->shaderGuard ? d->shaderGuard->id() : 0; never executed: return d->shaderGuard ? d->shaderGuard->id() : 0; | 0 |
297 | } | - |
298 | | - |
299 | class QOpenGLShaderProgramPrivate : public QObjectPrivate | - |
300 | { | - |
301 | inline QOpenGLShaderProgram* q_func() { return static_cast<QOpenGLShaderProgram *>(q_ptr); } inline const QOpenGLShaderProgram* q_func() const { return static_cast<const QOpenGLShaderProgram *>(q_ptr); } friend class QOpenGLShaderProgram; | - |
302 | public: | - |
303 | QOpenGLShaderProgramPrivate() | - |
304 | : programGuard(0) | - |
305 | , linked(false) | - |
306 | , inited(false) | - |
307 | , removingShaders(false) | - |
308 | , glfuncs(new QOpenGLFunctions) | - |
309 | { | - |
310 | } | 0 |
311 | ~QOpenGLShaderProgramPrivate(); | - |
312 | | - |
313 | QOpenGLSharedResourceGuard *programGuard; | - |
314 | bool linked; | - |
315 | bool inited; | - |
316 | bool removingShaders; | - |
317 | | - |
318 | QString log; | - |
319 | QList<QOpenGLShader *> shaders; | - |
320 | QList<QOpenGLShader *> anonShaders; | - |
321 | | - |
322 | QOpenGLFunctions *glfuncs; | - |
323 | | - |
324 | bool hasShader(QOpenGLShader::ShaderType type) const; | - |
325 | }; | - |
326 | | - |
327 | namespace { | - |
328 | void freeProgramFunc(QOpenGLFunctions *funcs, GLuint id) | - |
329 | { | - |
330 | funcs->glDeleteProgram(id); | - |
331 | } | 0 |
332 | } | - |
333 | | - |
334 | | - |
335 | QOpenGLShaderProgramPrivate::~QOpenGLShaderProgramPrivate() | - |
336 | { | - |
337 | delete glfuncs; | - |
338 | if (programGuard) never evaluated: programGuard | 0 |
339 | programGuard->free(); never executed: programGuard->free(); | 0 |
340 | } | 0 |
341 | | - |
342 | bool QOpenGLShaderProgramPrivate::hasShader(QOpenGLShader::ShaderType type) const | - |
343 | { | - |
344 | for (QForeachContainer<__typeof__(shaders)> _container_(shaders); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QOpenGLShader *shader = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
345 | if (shader->shaderType() == type) never evaluated: shader->shaderType() == type | 0 |
346 | return true; never executed: return true; | 0 |
347 | } | 0 |
348 | return false; never executed: return false; | 0 |
349 | } | - |
350 | QOpenGLShaderProgram::QOpenGLShaderProgram(QObject *parent) | - |
351 | : QObject(*new QOpenGLShaderProgramPrivate, parent) | - |
352 | { | - |
353 | } | 0 |
354 | | - |
355 | | - |
356 | | - |
357 | | - |
358 | QOpenGLShaderProgram::~QOpenGLShaderProgram() | - |
359 | { | - |
360 | } | - |
361 | | - |
362 | bool QOpenGLShaderProgram::init() | - |
363 | { | - |
364 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
365 | if ((d->programGuard && d->programGuard->id()) || d->inited) never evaluated: d->programGuard never evaluated: d->programGuard->id() never evaluated: d->inited | 0 |
366 | return true; never executed: return true; | 0 |
367 | d->inited = true; | - |
368 | QOpenGLContext *context = const_cast<QOpenGLContext *>(QOpenGLContext::currentContext()); | - |
369 | if (!context) never evaluated: !context | 0 |
370 | return false; never executed: return false; | 0 |
371 | d->glfuncs->initializeOpenGLFunctions(); | - |
372 | GLuint program = d->glfuncs->glCreateProgram(); | - |
373 | if (!program) { never evaluated: !program | 0 |
374 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 587, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram: could not create shader program"; | - |
375 | return false; never executed: return false; | 0 |
376 | } | - |
377 | if (d->programGuard) never evaluated: d->programGuard | 0 |
378 | delete d->programGuard; never executed: delete d->programGuard; | 0 |
379 | d->programGuard = new QOpenGLSharedResourceGuard(context, program, freeProgramFunc); | - |
380 | return true; never executed: return true; | 0 |
381 | } | - |
382 | bool QOpenGLShaderProgram::addShader(QOpenGLShader *shader) | - |
383 | { | - |
384 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
385 | if (!init()) | 0 |
386 | return false; never executed: return false; | 0 |
387 | if (d->shaders.contains(shader)) never evaluated: d->shaders.contains(shader) | 0 |
388 | return true; never executed: return true; | 0 |
389 | if (d->programGuard && d->programGuard->id() && shader) { never evaluated: d->programGuard never evaluated: d->programGuard->id() | 0 |
390 | if (!shader->d_func()->shaderGuard || !shader->d_func()->shaderGuard->id()) never evaluated: !shader->d_func()->shaderGuard never evaluated: !shader->d_func()->shaderGuard->id() | 0 |
391 | return false; never executed: return false; | 0 |
392 | if (d->programGuard->group() != shader->d_func()->shaderGuard->group()) { never evaluated: d->programGuard->group() != shader->d_func()->shaderGuard->group() | 0 |
393 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 619, __PRETTY_FUNCTION__).warning("QOpenGLShaderProgram::addShader: Program and shader are not associated with same context."); | - |
394 | return false; never executed: return false; | 0 |
395 | } | - |
396 | d->glfuncs->glAttachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); | - |
397 | d->linked = false; | - |
398 | d->shaders.append(shader); | - |
399 | connect(shader, "2""destroyed()", this, "1""shaderDestroyed()"); | - |
400 | return true; never executed: return true; | 0 |
401 | } else { | - |
402 | return false; never executed: return false; | 0 |
403 | } | - |
404 | } | - |
405 | bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const char *source) | - |
406 | { | - |
407 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
408 | if (!init()) | 0 |
409 | return false; never executed: return false; | 0 |
410 | QOpenGLShader *shader = new QOpenGLShader(type, this); | - |
411 | if (!shader->compileSourceCode(source)) { never evaluated: !shader->compileSourceCode(source) | 0 |
412 | d->log = shader->log(); | - |
413 | delete shader; | - |
414 | return false; never executed: return false; | 0 |
415 | } | - |
416 | d->anonShaders.append(shader); | - |
417 | return addShader(shader); never executed: return addShader(shader); | 0 |
418 | } | - |
419 | bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray& source) | - |
420 | { | - |
421 | return addShaderFromSourceCode(type, source.constData()); never executed: return addShaderFromSourceCode(type, source.constData()); | 0 |
422 | } | - |
423 | bool QOpenGLShaderProgram::addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString& source) | - |
424 | { | - |
425 | return addShaderFromSourceCode(type, source.toLatin1().constData()); never executed: return addShaderFromSourceCode(type, source.toLatin1().constData()); | 0 |
426 | } | - |
427 | bool QOpenGLShaderProgram::addShaderFromSourceFile | - |
428 | (QOpenGLShader::ShaderType type, const QString& fileName) | - |
429 | { | - |
430 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
431 | if (!init()) | 0 |
432 | return false; never executed: return false; | 0 |
433 | QOpenGLShader *shader = new QOpenGLShader(type, this); | - |
434 | if (!shader->compileSourceFile(fileName)) { never evaluated: !shader->compileSourceFile(fileName) | 0 |
435 | d->log = shader->log(); | - |
436 | delete shader; | - |
437 | return false; never executed: return false; | 0 |
438 | } | - |
439 | d->anonShaders.append(shader); | - |
440 | return addShader(shader); never executed: return addShader(shader); | 0 |
441 | } | - |
442 | void QOpenGLShaderProgram::removeShader(QOpenGLShader *shader) | - |
443 | { | - |
444 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
445 | if (d->programGuard && d->programGuard->id() never evaluated: d->programGuard never evaluated: d->programGuard->id() | 0 |
446 | && shader && shader->d_func()->shaderGuard) never evaluated: shader->d_func()->shaderGuard | 0 |
447 | { | - |
448 | d->glfuncs->glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); | - |
449 | } | 0 |
450 | d->linked = false; | - |
451 | if (shader) { | 0 |
452 | d->shaders.removeAll(shader); | - |
453 | d->anonShaders.removeAll(shader); | - |
454 | disconnect(shader, "2""destroyed()", this, "1""shaderDestroyed()"); | - |
455 | } | 0 |
456 | } | 0 |
457 | | - |
458 | | - |
459 | | - |
460 | | - |
461 | | - |
462 | | - |
463 | | - |
464 | QList<QOpenGLShader *> QOpenGLShaderProgram::shaders() const | - |
465 | { | - |
466 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
467 | return d->shaders; never executed: return d->shaders; | 0 |
468 | } | - |
469 | void QOpenGLShaderProgram::removeAllShaders() | - |
470 | { | - |
471 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
472 | d->removingShaders = true; | - |
473 | for (QForeachContainer<__typeof__(d->shaders)> _container_(d->shaders); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QOpenGLShader *shader = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
474 | if (d->programGuard && d->programGuard->id() never evaluated: d->programGuard never evaluated: d->programGuard->id() | 0 |
475 | && shader && shader->d_func()->shaderGuard) never evaluated: shader->d_func()->shaderGuard | 0 |
476 | { | - |
477 | d->glfuncs->glDetachShader(d->programGuard->id(), shader->d_func()->shaderGuard->id()); | - |
478 | } | 0 |
479 | } | 0 |
480 | for (QForeachContainer<__typeof__(d->anonShaders)> _container_(d->anonShaders); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (QOpenGLShader *shader = *_container_.i;; __extension__ ({--_container_.brk; break;})) { | - |
481 | | - |
482 | delete shader; | - |
483 | } | 0 |
484 | d->shaders.clear(); | - |
485 | d->anonShaders.clear(); | - |
486 | d->linked = false; | - |
487 | d->removingShaders = false; | - |
488 | } | 0 |
489 | bool QOpenGLShaderProgram::link() | - |
490 | { | - |
491 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
492 | GLuint program = d->programGuard ? d->programGuard->id() : 0; never evaluated: d->programGuard | 0 |
493 | if (!program) never evaluated: !program | 0 |
494 | return false; never executed: return false; | 0 |
495 | | - |
496 | GLint value; | - |
497 | if (d->shaders.isEmpty()) { never evaluated: d->shaders.isEmpty() | 0 |
498 | | - |
499 | | - |
500 | | - |
501 | | - |
502 | value = 0; | - |
503 | d->glfuncs->glGetProgramiv(program, 0x8B82, &value); | - |
504 | d->linked = (value != 0); | - |
505 | if (d->linked) never evaluated: d->linked | 0 |
506 | return true; never executed: return true; | 0 |
507 | } | 0 |
508 | | - |
509 | d->glfuncs->glLinkProgram(program); | - |
510 | value = 0; | - |
511 | d->glfuncs->glGetProgramiv(program, 0x8B82, &value); | - |
512 | d->linked = (value != 0); | - |
513 | value = 0; | - |
514 | d->glfuncs->glGetProgramiv(program, 0x8B84, &value); | - |
515 | d->log = QString(); | - |
516 | if (value > 1) { never evaluated: value > 1 | 0 |
517 | char *logbuf = new char [value]; | - |
518 | GLint len; | - |
519 | d->glfuncs->glGetProgramInfoLog(program, value, &len, logbuf); | - |
520 | d->log = QString::fromLatin1(logbuf); | - |
521 | QString name = objectName(); | - |
522 | if (name.isEmpty()) never evaluated: name.isEmpty() | 0 |
523 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 840, __PRETTY_FUNCTION__).warning() << "QOpenGLShader::link:" << d->log; never executed: QMessageLogger("opengl/qopenglshaderprogram.cpp", 840, __PRETTY_FUNCTION__).warning() << "QOpenGLShader::link:" << d->log; | 0 |
524 | else | - |
525 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 842, __PRETTY_FUNCTION__).warning() << "QOpenGLShader::link[" << name << "]:" << d->log; never executed: QMessageLogger("opengl/qopenglshaderprogram.cpp", 842, __PRETTY_FUNCTION__).warning() << "QOpenGLShader::link[" << name << "]:" << d->log; | 0 |
526 | delete [] logbuf; | - |
527 | } | 0 |
528 | return d->linked; never executed: return d->linked; | 0 |
529 | } | - |
530 | | - |
531 | | - |
532 | | - |
533 | | - |
534 | | - |
535 | | - |
536 | bool QOpenGLShaderProgram::isLinked() const | - |
537 | { | - |
538 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
539 | return d->linked; never executed: return d->linked; | 0 |
540 | } | - |
541 | | - |
542 | | - |
543 | | - |
544 | | - |
545 | | - |
546 | | - |
547 | | - |
548 | QString QOpenGLShaderProgram::log() const | - |
549 | { | - |
550 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
551 | return d->log; never executed: return d->log; | 0 |
552 | } | - |
553 | bool QOpenGLShaderProgram::bind() | - |
554 | { | - |
555 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
556 | GLuint program = d->programGuard ? d->programGuard->id() : 0; never evaluated: d->programGuard | 0 |
557 | if (!program) never evaluated: !program | 0 |
558 | return false; never executed: return false; | 0 |
559 | if (!d->linked && !link()) never evaluated: !d->linked | 0 |
560 | return false; never executed: return false; | 0 |
561 | | - |
562 | | - |
563 | | - |
564 | | - |
565 | | - |
566 | | - |
567 | d->glfuncs->glUseProgram(program); | - |
568 | return true; never executed: return true; | 0 |
569 | } | - |
570 | | - |
571 | | - |
572 | | - |
573 | | - |
574 | | - |
575 | | - |
576 | | - |
577 | void QOpenGLShaderProgram::release() | - |
578 | { | - |
579 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
580 | | - |
581 | | - |
582 | | - |
583 | | - |
584 | d->glfuncs->glUseProgram(0); | - |
585 | } | 0 |
586 | | - |
587 | | - |
588 | | - |
589 | | - |
590 | | - |
591 | | - |
592 | GLuint QOpenGLShaderProgram::programId() const | - |
593 | { | - |
594 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
595 | GLuint id = d->programGuard ? d->programGuard->id() : 0; never evaluated: d->programGuard | 0 |
596 | if (id) | 0 |
597 | return id; never executed: return id; | 0 |
598 | | - |
599 | | - |
600 | | - |
601 | | - |
602 | if (!const_cast<QOpenGLShaderProgram *>(this)->init()) never evaluated: !const_cast<QOpenGLShaderProgram *>(this)->init() | 0 |
603 | return 0; never executed: return 0; | 0 |
604 | return d->programGuard ? d->programGuard->id() : 0; never executed: return d->programGuard ? d->programGuard->id() : 0; | 0 |
605 | } | - |
606 | void QOpenGLShaderProgram::bindAttributeLocation(const char *name, int location) | - |
607 | { | - |
608 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
609 | if (!init() || !d->programGuard || !d->programGuard->id()) never evaluated: !d->programGuard never evaluated: !d->programGuard->id() | 0 |
610 | return; | 0 |
611 | d->glfuncs->glBindAttribLocation(d->programGuard->id(), location, name); | - |
612 | d->linked = false; | - |
613 | } | 0 |
614 | void QOpenGLShaderProgram::bindAttributeLocation(const QByteArray& name, int location) | - |
615 | { | - |
616 | bindAttributeLocation(name.constData(), location); | - |
617 | } | 0 |
618 | void QOpenGLShaderProgram::bindAttributeLocation(const QString& name, int location) | - |
619 | { | - |
620 | bindAttributeLocation(name.toLatin1().constData(), location); | - |
621 | } | 0 |
622 | int QOpenGLShaderProgram::attributeLocation(const char *name) const | - |
623 | { | - |
624 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
625 | if (d->linked && d->programGuard && d->programGuard->id()) { never evaluated: d->linked never evaluated: d->programGuard never evaluated: d->programGuard->id() | 0 |
626 | return d->glfuncs->glGetAttribLocation(d->programGuard->id(), name); never executed: return d->glfuncs->glGetAttribLocation(d->programGuard->id(), name); | 0 |
627 | } else { | - |
628 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 1004, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram::attributeLocation(" << name | - |
629 | << "): shader program is not linked"; | - |
630 | return -1; never executed: return -1; | 0 |
631 | } | - |
632 | } | - |
633 | int QOpenGLShaderProgram::attributeLocation(const QByteArray& name) const | - |
634 | { | - |
635 | return attributeLocation(name.constData()); never executed: return attributeLocation(name.constData()); | 0 |
636 | } | - |
637 | int QOpenGLShaderProgram::attributeLocation(const QString& name) const | - |
638 | { | - |
639 | return attributeLocation(name.toLatin1().constData()); never executed: return attributeLocation(name.toLatin1().constData()); | 0 |
640 | } | - |
641 | | - |
642 | | - |
643 | | - |
644 | | - |
645 | | - |
646 | | - |
647 | void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat value) | - |
648 | { | - |
649 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
650 | if (location != -1) never evaluated: location != -1 | 0 |
651 | d->glfuncs->glVertexAttrib1fv(location, &value); never executed: d->glfuncs->glVertexAttrib1fv(location, &value); | 0 |
652 | } | 0 |
653 | void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat value) | - |
654 | { | - |
655 | setAttributeValue(attributeLocation(name), value); | - |
656 | } | 0 |
657 | | - |
658 | | - |
659 | | - |
660 | | - |
661 | | - |
662 | | - |
663 | | - |
664 | void QOpenGLShaderProgram::setAttributeValue(int location, GLfloat x, GLfloat y) | - |
665 | { | - |
666 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
667 | if (location != -1) { never evaluated: location != -1 | 0 |
668 | GLfloat values[2] = {x, y}; | - |
669 | d->glfuncs->glVertexAttrib2fv(location, values); | - |
670 | } | 0 |
671 | } | 0 |
672 | void QOpenGLShaderProgram::setAttributeValue(const char *name, GLfloat x, GLfloat y) | - |
673 | { | - |
674 | setAttributeValue(attributeLocation(name), x, y); | - |
675 | } | 0 |
676 | | - |
677 | | - |
678 | | - |
679 | | - |
680 | | - |
681 | | - |
682 | | - |
683 | void QOpenGLShaderProgram::setAttributeValue | - |
684 | (int location, GLfloat x, GLfloat y, GLfloat z) | - |
685 | { | - |
686 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
687 | (void)d;; | - |
688 | if (location != -1) { never evaluated: location != -1 | 0 |
689 | GLfloat values[3] = {x, y, z}; | - |
690 | d->glfuncs->glVertexAttrib3fv(location, values); | - |
691 | } | 0 |
692 | } | 0 |
693 | void QOpenGLShaderProgram::setAttributeValue | - |
694 | (const char *name, GLfloat x, GLfloat y, GLfloat z) | - |
695 | { | - |
696 | setAttributeValue(attributeLocation(name), x, y, z); | - |
697 | } | 0 |
698 | | - |
699 | | - |
700 | | - |
701 | | - |
702 | | - |
703 | | - |
704 | | - |
705 | void QOpenGLShaderProgram::setAttributeValue | - |
706 | (int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | - |
707 | { | - |
708 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
709 | if (location != -1) { never evaluated: location != -1 | 0 |
710 | GLfloat values[4] = {x, y, z, w}; | - |
711 | d->glfuncs->glVertexAttrib4fv(location, values); | - |
712 | } | 0 |
713 | } | 0 |
714 | void QOpenGLShaderProgram::setAttributeValue | - |
715 | (const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | - |
716 | { | - |
717 | setAttributeValue(attributeLocation(name), x, y, z, w); | - |
718 | } | 0 |
719 | | - |
720 | | - |
721 | | - |
722 | | - |
723 | | - |
724 | | - |
725 | void QOpenGLShaderProgram::setAttributeValue(int location, const QVector2D& value) | - |
726 | { | - |
727 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
728 | if (location != -1) never evaluated: location != -1 | 0 |
729 | d->glfuncs->glVertexAttrib2fv(location, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glVertexAttrib2fv(location, reinterpret_cast<const GLfloat *>(&value)); | 0 |
730 | } | 0 |
731 | void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector2D& value) | - |
732 | { | - |
733 | setAttributeValue(attributeLocation(name), value); | - |
734 | } | 0 |
735 | | - |
736 | | - |
737 | | - |
738 | | - |
739 | | - |
740 | | - |
741 | void QOpenGLShaderProgram::setAttributeValue(int location, const QVector3D& value) | - |
742 | { | - |
743 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
744 | (void)d;; | - |
745 | if (location != -1) never evaluated: location != -1 | 0 |
746 | d->glfuncs->glVertexAttrib3fv(location, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glVertexAttrib3fv(location, reinterpret_cast<const GLfloat *>(&value)); | 0 |
747 | } | 0 |
748 | void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector3D& value) | - |
749 | { | - |
750 | setAttributeValue(attributeLocation(name), value); | - |
751 | } | 0 |
752 | | - |
753 | | - |
754 | | - |
755 | | - |
756 | | - |
757 | | - |
758 | void QOpenGLShaderProgram::setAttributeValue(int location, const QVector4D& value) | - |
759 | { | - |
760 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
761 | (void)d;; | - |
762 | if (location != -1) never evaluated: location != -1 | 0 |
763 | d->glfuncs->glVertexAttrib4fv(location, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glVertexAttrib4fv(location, reinterpret_cast<const GLfloat *>(&value)); | 0 |
764 | } | 0 |
765 | void QOpenGLShaderProgram::setAttributeValue(const char *name, const QVector4D& value) | - |
766 | { | - |
767 | setAttributeValue(attributeLocation(name), value); | - |
768 | } | 0 |
769 | | - |
770 | | - |
771 | | - |
772 | | - |
773 | | - |
774 | | - |
775 | void QOpenGLShaderProgram::setAttributeValue(int location, const QColor& value) | - |
776 | { | - |
777 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
778 | (void)d;; | - |
779 | if (location != -1) { never evaluated: location != -1 | 0 |
780 | GLfloat values[4] = {GLfloat(value.redF()), GLfloat(value.greenF()), | - |
781 | GLfloat(value.blueF()), GLfloat(value.alphaF())}; | - |
782 | d->glfuncs->glVertexAttrib4fv(location, values); | - |
783 | } | 0 |
784 | } | 0 |
785 | void QOpenGLShaderProgram::setAttributeValue(const char *name, const QColor& value) | - |
786 | { | - |
787 | setAttributeValue(attributeLocation(name), value); | - |
788 | } | 0 |
789 | void QOpenGLShaderProgram::setAttributeValue | - |
790 | (int location, const GLfloat *values, int columns, int rows) | - |
791 | { | - |
792 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
793 | (void)d;; | - |
794 | if (rows < 1 || rows > 4) { never evaluated: rows < 1 never evaluated: rows > 4 | 0 |
795 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 1268, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram::setAttributeValue: rows" << rows << "not supported"; | - |
796 | return; | 0 |
797 | } | - |
798 | if (location != -1) { never evaluated: location != -1 | 0 |
799 | while (columns-- > 0) { never evaluated: columns-- > 0 | 0 |
800 | if (rows == 1) never evaluated: rows == 1 | 0 |
801 | d->glfuncs->glVertexAttrib1fv(location, values); never executed: d->glfuncs->glVertexAttrib1fv(location, values); | 0 |
802 | else if (rows == 2) never evaluated: rows == 2 | 0 |
803 | d->glfuncs->glVertexAttrib2fv(location, values); never executed: d->glfuncs->glVertexAttrib2fv(location, values); | 0 |
804 | else if (rows == 3) never evaluated: rows == 3 | 0 |
805 | d->glfuncs->glVertexAttrib3fv(location, values); never executed: d->glfuncs->glVertexAttrib3fv(location, values); | 0 |
806 | else | - |
807 | d->glfuncs->glVertexAttrib4fv(location, values); never executed: d->glfuncs->glVertexAttrib4fv(location, values); | 0 |
808 | values += rows; | - |
809 | ++location; | - |
810 | } | 0 |
811 | } | 0 |
812 | } | 0 |
813 | void QOpenGLShaderProgram::setAttributeValue | - |
814 | (const char *name, const GLfloat *values, int columns, int rows) | - |
815 | { | - |
816 | setAttributeValue(attributeLocation(name), values, columns, rows); | - |
817 | } | 0 |
818 | void QOpenGLShaderProgram::setAttributeArray | - |
819 | (int location, const GLfloat *values, int tupleSize, int stride) | - |
820 | { | - |
821 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
822 | (void)d;; | - |
823 | if (location != -1) { never evaluated: location != -1 | 0 |
824 | d->glfuncs->glVertexAttribPointer(location, tupleSize, 0x1406, 0x0, | - |
825 | stride, values); | - |
826 | } | 0 |
827 | } | 0 |
828 | void QOpenGLShaderProgram::setAttributeArray | - |
829 | (int location, const QVector2D *values, int stride) | - |
830 | { | - |
831 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
832 | (void)d;; | - |
833 | if (location != -1) { never evaluated: location != -1 | 0 |
834 | d->glfuncs->glVertexAttribPointer(location, 2, 0x1406, 0x0, | - |
835 | stride, values); | - |
836 | } | 0 |
837 | } | 0 |
838 | void QOpenGLShaderProgram::setAttributeArray | - |
839 | (int location, const QVector3D *values, int stride) | - |
840 | { | - |
841 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
842 | (void)d;; | - |
843 | if (location != -1) { never evaluated: location != -1 | 0 |
844 | d->glfuncs->glVertexAttribPointer(location, 3, 0x1406, 0x0, | - |
845 | stride, values); | - |
846 | } | 0 |
847 | } | 0 |
848 | void QOpenGLShaderProgram::setAttributeArray | - |
849 | (int location, const QVector4D *values, int stride) | - |
850 | { | - |
851 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
852 | (void)d;; | - |
853 | if (location != -1) { never evaluated: location != -1 | 0 |
854 | d->glfuncs->glVertexAttribPointer(location, 4, 0x1406, 0x0, | - |
855 | stride, values); | - |
856 | } | 0 |
857 | } | 0 |
858 | void QOpenGLShaderProgram::setAttributeArray | - |
859 | (int location, GLenum type, const void *values, int tupleSize, int stride) | - |
860 | { | - |
861 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
862 | (void)d;; | - |
863 | if (location != -1) { never evaluated: location != -1 | 0 |
864 | d->glfuncs->glVertexAttribPointer(location, tupleSize, type, 0x1, | - |
865 | stride, values); | - |
866 | } | 0 |
867 | } | 0 |
868 | void QOpenGLShaderProgram::setAttributeArray | - |
869 | (const char *name, const GLfloat *values, int tupleSize, int stride) | - |
870 | { | - |
871 | setAttributeArray(attributeLocation(name), values, tupleSize, stride); | - |
872 | } | 0 |
873 | void QOpenGLShaderProgram::setAttributeArray | - |
874 | (const char *name, const QVector2D *values, int stride) | - |
875 | { | - |
876 | setAttributeArray(attributeLocation(name), values, stride); | - |
877 | } | 0 |
878 | void QOpenGLShaderProgram::setAttributeArray | - |
879 | (const char *name, const QVector3D *values, int stride) | - |
880 | { | - |
881 | setAttributeArray(attributeLocation(name), values, stride); | - |
882 | } | 0 |
883 | void QOpenGLShaderProgram::setAttributeArray | - |
884 | (const char *name, const QVector4D *values, int stride) | - |
885 | { | - |
886 | setAttributeArray(attributeLocation(name), values, stride); | - |
887 | } | 0 |
888 | void QOpenGLShaderProgram::setAttributeArray | - |
889 | (const char *name, GLenum type, const void *values, int tupleSize, int stride) | - |
890 | { | - |
891 | setAttributeArray(attributeLocation(name), type, values, tupleSize, stride); | - |
892 | } | 0 |
893 | void QOpenGLShaderProgram::setAttributeBuffer | - |
894 | (int location, GLenum type, int offset, int tupleSize, int stride) | - |
895 | { | - |
896 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
897 | (void)d;; | - |
898 | if (location != -1) { never evaluated: location != -1 | 0 |
899 | d->glfuncs->glVertexAttribPointer(location, tupleSize, type, 0x1, stride, | - |
900 | reinterpret_cast<const void *>(offset)); | - |
901 | } | 0 |
902 | } | 0 |
903 | void QOpenGLShaderProgram::setAttributeBuffer | - |
904 | (const char *name, GLenum type, int offset, int tupleSize, int stride) | - |
905 | { | - |
906 | setAttributeBuffer(attributeLocation(name), type, offset, tupleSize, stride); | - |
907 | } | 0 |
908 | void QOpenGLShaderProgram::enableAttributeArray(int location) | - |
909 | { | - |
910 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
911 | (void)d;; | - |
912 | if (location != -1) never evaluated: location != -1 | 0 |
913 | d->glfuncs->glEnableVertexAttribArray(location); never executed: d->glfuncs->glEnableVertexAttribArray(location); | 0 |
914 | } | 0 |
915 | void QOpenGLShaderProgram::enableAttributeArray(const char *name) | - |
916 | { | - |
917 | enableAttributeArray(attributeLocation(name)); | - |
918 | } | 0 |
919 | void QOpenGLShaderProgram::disableAttributeArray(int location) | - |
920 | { | - |
921 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
922 | (void)d;; | - |
923 | if (location != -1) never evaluated: location != -1 | 0 |
924 | d->glfuncs->glDisableVertexAttribArray(location); never executed: d->glfuncs->glDisableVertexAttribArray(location); | 0 |
925 | } | 0 |
926 | void QOpenGLShaderProgram::disableAttributeArray(const char *name) | - |
927 | { | - |
928 | disableAttributeArray(attributeLocation(name)); | - |
929 | } | 0 |
930 | int QOpenGLShaderProgram::uniformLocation(const char *name) const | - |
931 | { | - |
932 | const QOpenGLShaderProgramPrivate * const d = d_func(); | - |
933 | (void)d;; | - |
934 | if (d->linked && d->programGuard && d->programGuard->id()) { never evaluated: d->linked never evaluated: d->programGuard never evaluated: d->programGuard->id() | 0 |
935 | return d->glfuncs->glGetUniformLocation(d->programGuard->id(), name); never executed: return d->glfuncs->glGetUniformLocation(d->programGuard->id(), name); | 0 |
936 | } else { | - |
937 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 1674, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram::uniformLocation(" << name | - |
938 | << "): shader program is not linked"; | - |
939 | return -1; never executed: return -1; | 0 |
940 | } | - |
941 | } | - |
942 | int QOpenGLShaderProgram::uniformLocation(const QByteArray& name) const | - |
943 | { | - |
944 | return uniformLocation(name.constData()); never executed: return uniformLocation(name.constData()); | 0 |
945 | } | - |
946 | int QOpenGLShaderProgram::uniformLocation(const QString& name) const | - |
947 | { | - |
948 | return uniformLocation(name.toLatin1().constData()); never executed: return uniformLocation(name.toLatin1().constData()); | 0 |
949 | } | - |
950 | | - |
951 | | - |
952 | | - |
953 | | - |
954 | | - |
955 | | - |
956 | void QOpenGLShaderProgram::setUniformValue(int location, GLfloat value) | - |
957 | { | - |
958 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
959 | (void)d;; | - |
960 | if (location != -1) never evaluated: location != -1 | 0 |
961 | d->glfuncs->glUniform1fv(location, 1, &value); never executed: d->glfuncs->glUniform1fv(location, 1, &value); | 0 |
962 | } | 0 |
963 | void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat value) | - |
964 | { | - |
965 | setUniformValue(uniformLocation(name), value); | - |
966 | } | 0 |
967 | | - |
968 | | - |
969 | | - |
970 | | - |
971 | | - |
972 | | - |
973 | void QOpenGLShaderProgram::setUniformValue(int location, GLint value) | - |
974 | { | - |
975 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
976 | (void)d;; | - |
977 | if (location != -1) never evaluated: location != -1 | 0 |
978 | d->glfuncs->glUniform1i(location, value); never executed: d->glfuncs->glUniform1i(location, value); | 0 |
979 | } | 0 |
980 | void QOpenGLShaderProgram::setUniformValue(const char *name, GLint value) | - |
981 | { | - |
982 | setUniformValue(uniformLocation(name), value); | - |
983 | } | 0 |
984 | | - |
985 | | - |
986 | | - |
987 | | - |
988 | | - |
989 | | - |
990 | | - |
991 | void QOpenGLShaderProgram::setUniformValue(int location, GLuint value) | - |
992 | { | - |
993 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
994 | (void)d;; | - |
995 | if (location != -1) never evaluated: location != -1 | 0 |
996 | d->glfuncs->glUniform1i(location, value); never executed: d->glfuncs->glUniform1i(location, value); | 0 |
997 | } | 0 |
998 | void QOpenGLShaderProgram::setUniformValue(const char *name, GLuint value) | - |
999 | { | - |
1000 | setUniformValue(uniformLocation(name), value); | - |
1001 | } | 0 |
1002 | | - |
1003 | | - |
1004 | | - |
1005 | | - |
1006 | | - |
1007 | | - |
1008 | | - |
1009 | void QOpenGLShaderProgram::setUniformValue(int location, GLfloat x, GLfloat y) | - |
1010 | { | - |
1011 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1012 | (void)d;; | - |
1013 | if (location != -1) { never evaluated: location != -1 | 0 |
1014 | GLfloat values[2] = {x, y}; | - |
1015 | d->glfuncs->glUniform2fv(location, 1, values); | - |
1016 | } | 0 |
1017 | } | 0 |
1018 | void QOpenGLShaderProgram::setUniformValue(const char *name, GLfloat x, GLfloat y) | - |
1019 | { | - |
1020 | setUniformValue(uniformLocation(name), x, y); | - |
1021 | } | 0 |
1022 | | - |
1023 | | - |
1024 | | - |
1025 | | - |
1026 | | - |
1027 | | - |
1028 | | - |
1029 | void QOpenGLShaderProgram::setUniformValue | - |
1030 | (int location, GLfloat x, GLfloat y, GLfloat z) | - |
1031 | { | - |
1032 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1033 | (void)d;; | - |
1034 | if (location != -1) { never evaluated: location != -1 | 0 |
1035 | GLfloat values[3] = {x, y, z}; | - |
1036 | d->glfuncs->glUniform3fv(location, 1, values); | - |
1037 | } | 0 |
1038 | } | 0 |
1039 | void QOpenGLShaderProgram::setUniformValue | - |
1040 | (const char *name, GLfloat x, GLfloat y, GLfloat z) | - |
1041 | { | - |
1042 | setUniformValue(uniformLocation(name), x, y, z); | - |
1043 | } | 0 |
1044 | | - |
1045 | | - |
1046 | | - |
1047 | | - |
1048 | | - |
1049 | | - |
1050 | | - |
1051 | void QOpenGLShaderProgram::setUniformValue | - |
1052 | (int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | - |
1053 | { | - |
1054 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1055 | (void)d;; | - |
1056 | if (location != -1) { never evaluated: location != -1 | 0 |
1057 | GLfloat values[4] = {x, y, z, w}; | - |
1058 | d->glfuncs->glUniform4fv(location, 1, values); | - |
1059 | } | 0 |
1060 | } | 0 |
1061 | void QOpenGLShaderProgram::setUniformValue | - |
1062 | (const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) | - |
1063 | { | - |
1064 | setUniformValue(uniformLocation(name), x, y, z, w); | - |
1065 | } | 0 |
1066 | | - |
1067 | | - |
1068 | | - |
1069 | | - |
1070 | | - |
1071 | | - |
1072 | void QOpenGLShaderProgram::setUniformValue(int location, const QVector2D& value) | - |
1073 | { | - |
1074 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1075 | (void)d;; | - |
1076 | if (location != -1) never evaluated: location != -1 | 0 |
1077 | d->glfuncs->glUniform2fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glUniform2fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); | 0 |
1078 | } | 0 |
1079 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector2D& value) | - |
1080 | { | - |
1081 | setUniformValue(uniformLocation(name), value); | - |
1082 | } | 0 |
1083 | | - |
1084 | | - |
1085 | | - |
1086 | | - |
1087 | | - |
1088 | | - |
1089 | void QOpenGLShaderProgram::setUniformValue(int location, const QVector3D& value) | - |
1090 | { | - |
1091 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1092 | (void)d;; | - |
1093 | if (location != -1) never evaluated: location != -1 | 0 |
1094 | d->glfuncs->glUniform3fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glUniform3fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); | 0 |
1095 | } | 0 |
1096 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector3D& value) | - |
1097 | { | - |
1098 | setUniformValue(uniformLocation(name), value); | - |
1099 | } | 0 |
1100 | | - |
1101 | | - |
1102 | | - |
1103 | | - |
1104 | | - |
1105 | | - |
1106 | void QOpenGLShaderProgram::setUniformValue(int location, const QVector4D& value) | - |
1107 | { | - |
1108 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1109 | (void)d;; | - |
1110 | if (location != -1) never evaluated: location != -1 | 0 |
1111 | d->glfuncs->glUniform4fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); never executed: d->glfuncs->glUniform4fv(location, 1, reinterpret_cast<const GLfloat *>(&value)); | 0 |
1112 | } | 0 |
1113 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QVector4D& value) | - |
1114 | { | - |
1115 | setUniformValue(uniformLocation(name), value); | - |
1116 | } | 0 |
1117 | | - |
1118 | | - |
1119 | | - |
1120 | | - |
1121 | | - |
1122 | | - |
1123 | | - |
1124 | void QOpenGLShaderProgram::setUniformValue(int location, const QColor& color) | - |
1125 | { | - |
1126 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1127 | (void)d;; | - |
1128 | if (location != -1) { never evaluated: location != -1 | 0 |
1129 | GLfloat values[4] = {GLfloat(color.redF()), GLfloat(color.greenF()), | - |
1130 | GLfloat(color.blueF()), GLfloat(color.alphaF())}; | - |
1131 | d->glfuncs->glUniform4fv(location, 1, values); | - |
1132 | } | 0 |
1133 | } | 0 |
1134 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QColor& color) | - |
1135 | { | - |
1136 | setUniformValue(uniformLocation(name), color); | - |
1137 | } | 0 |
1138 | | - |
1139 | | - |
1140 | | - |
1141 | | - |
1142 | | - |
1143 | | - |
1144 | | - |
1145 | void QOpenGLShaderProgram::setUniformValue(int location, const QPoint& point) | - |
1146 | { | - |
1147 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1148 | (void)d;; | - |
1149 | if (location != -1) { never evaluated: location != -1 | 0 |
1150 | GLfloat values[4] = {GLfloat(point.x()), GLfloat(point.y())}; | - |
1151 | d->glfuncs->glUniform2fv(location, 1, values); | - |
1152 | } | 0 |
1153 | } | 0 |
1154 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QPoint& point) | - |
1155 | { | - |
1156 | setUniformValue(uniformLocation(name), point); | - |
1157 | } | 0 |
1158 | | - |
1159 | | - |
1160 | | - |
1161 | | - |
1162 | | - |
1163 | | - |
1164 | | - |
1165 | void QOpenGLShaderProgram::setUniformValue(int location, const QPointF& point) | - |
1166 | { | - |
1167 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1168 | (void)d;; | - |
1169 | if (location != -1) { never evaluated: location != -1 | 0 |
1170 | GLfloat values[4] = {GLfloat(point.x()), GLfloat(point.y())}; | - |
1171 | d->glfuncs->glUniform2fv(location, 1, values); | - |
1172 | } | 0 |
1173 | } | 0 |
1174 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QPointF& point) | - |
1175 | { | - |
1176 | setUniformValue(uniformLocation(name), point); | - |
1177 | } | 0 |
1178 | | - |
1179 | | - |
1180 | | - |
1181 | | - |
1182 | | - |
1183 | | - |
1184 | | - |
1185 | void QOpenGLShaderProgram::setUniformValue(int location, const QSize& size) | - |
1186 | { | - |
1187 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1188 | (void)d;; | - |
1189 | if (location != -1) { never evaluated: location != -1 | 0 |
1190 | GLfloat values[4] = {GLfloat(size.width()), GLfloat(size.height())}; | - |
1191 | d->glfuncs->glUniform2fv(location, 1, values); | - |
1192 | } | 0 |
1193 | } | 0 |
1194 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QSize& size) | - |
1195 | { | - |
1196 | setUniformValue(uniformLocation(name), size); | - |
1197 | } | 0 |
1198 | | - |
1199 | | - |
1200 | | - |
1201 | | - |
1202 | | - |
1203 | | - |
1204 | | - |
1205 | void QOpenGLShaderProgram::setUniformValue(int location, const QSizeF& size) | - |
1206 | { | - |
1207 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1208 | (void)d;; | - |
1209 | if (location != -1) { never evaluated: location != -1 | 0 |
1210 | GLfloat values[4] = {GLfloat(size.width()), GLfloat(size.height())}; | - |
1211 | d->glfuncs->glUniform2fv(location, 1, values); | - |
1212 | } | 0 |
1213 | } | 0 |
1214 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QSizeF& size) | - |
1215 | { | - |
1216 | setUniformValue(uniformLocation(name), size); | - |
1217 | } | 0 |
1218 | | - |
1219 | | - |
1220 | | - |
1221 | | - |
1222 | | - |
1223 | | - |
1224 | | - |
1225 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x2& value) | - |
1226 | { | - |
1227 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1228 | (void)d;; | - |
1229 | d->glfuncs->glUniformMatrix2fv(location, 1, 0x0, value.constData()); | - |
1230 | } | 0 |
1231 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x2& value) | - |
1232 | { | - |
1233 | setUniformValue(uniformLocation(name), value); | - |
1234 | } | 0 |
1235 | | - |
1236 | | - |
1237 | | - |
1238 | | - |
1239 | | - |
1240 | | - |
1241 | | - |
1242 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x3& value) | - |
1243 | { | - |
1244 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1245 | (void)d;; | - |
1246 | d->glfuncs->glUniform3fv(location, 2, value.constData()); | - |
1247 | } | 0 |
1248 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x3& value) | - |
1249 | { | - |
1250 | setUniformValue(uniformLocation(name), value); | - |
1251 | } | 0 |
1252 | | - |
1253 | | - |
1254 | | - |
1255 | | - |
1256 | | - |
1257 | | - |
1258 | | - |
1259 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix2x4& value) | - |
1260 | { | - |
1261 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1262 | (void)d;; | - |
1263 | d->glfuncs->glUniform4fv(location, 2, value.constData()); | - |
1264 | } | 0 |
1265 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix2x4& value) | - |
1266 | { | - |
1267 | setUniformValue(uniformLocation(name), value); | - |
1268 | } | 0 |
1269 | | - |
1270 | | - |
1271 | | - |
1272 | | - |
1273 | | - |
1274 | | - |
1275 | | - |
1276 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x2& value) | - |
1277 | { | - |
1278 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1279 | (void)d;; | - |
1280 | d->glfuncs->glUniform2fv(location, 3, value.constData()); | - |
1281 | } | 0 |
1282 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x2& value) | - |
1283 | { | - |
1284 | setUniformValue(uniformLocation(name), value); | - |
1285 | } | 0 |
1286 | | - |
1287 | | - |
1288 | | - |
1289 | | - |
1290 | | - |
1291 | | - |
1292 | | - |
1293 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x3& value) | - |
1294 | { | - |
1295 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1296 | (void)d;; | - |
1297 | d->glfuncs->glUniformMatrix3fv(location, 1, 0x0, value.constData()); | - |
1298 | } | 0 |
1299 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x3& value) | - |
1300 | { | - |
1301 | setUniformValue(uniformLocation(name), value); | - |
1302 | } | 0 |
1303 | | - |
1304 | | - |
1305 | | - |
1306 | | - |
1307 | | - |
1308 | | - |
1309 | | - |
1310 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix3x4& value) | - |
1311 | { | - |
1312 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1313 | (void)d;; | - |
1314 | d->glfuncs->glUniform4fv(location, 3, value.constData()); | - |
1315 | } | 0 |
1316 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix3x4& value) | - |
1317 | { | - |
1318 | setUniformValue(uniformLocation(name), value); | - |
1319 | } | 0 |
1320 | | - |
1321 | | - |
1322 | | - |
1323 | | - |
1324 | | - |
1325 | | - |
1326 | | - |
1327 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x2& value) | - |
1328 | { | - |
1329 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1330 | (void)d;; | - |
1331 | d->glfuncs->glUniform2fv(location, 4, value.constData()); | - |
1332 | } | 0 |
1333 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x2& value) | - |
1334 | { | - |
1335 | setUniformValue(uniformLocation(name), value); | - |
1336 | } | 0 |
1337 | | - |
1338 | | - |
1339 | | - |
1340 | | - |
1341 | | - |
1342 | | - |
1343 | | - |
1344 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x3& value) | - |
1345 | { | - |
1346 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1347 | (void)d;; | - |
1348 | d->glfuncs->glUniform3fv(location, 4, value.constData()); | - |
1349 | } | 0 |
1350 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x3& value) | - |
1351 | { | - |
1352 | setUniformValue(uniformLocation(name), value); | - |
1353 | } | 0 |
1354 | | - |
1355 | | - |
1356 | | - |
1357 | | - |
1358 | | - |
1359 | | - |
1360 | | - |
1361 | void QOpenGLShaderProgram::setUniformValue(int location, const QMatrix4x4& value) | - |
1362 | { | - |
1363 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1364 | (void)d;; | - |
1365 | d->glfuncs->glUniformMatrix4fv(location, 1, 0x0, value.constData()); | - |
1366 | } | 0 |
1367 | void QOpenGLShaderProgram::setUniformValue(const char *name, const QMatrix4x4& value) | - |
1368 | { | - |
1369 | setUniformValue(uniformLocation(name), value); | - |
1370 | } | 0 |
1371 | void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat value[2][2]) | - |
1372 | { | - |
1373 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1374 | (void)d;; | - |
1375 | if (location != -1) never evaluated: location != -1 | 0 |
1376 | d->glfuncs->glUniformMatrix2fv(location, 1, 0x0, value[0]); never executed: d->glfuncs->glUniformMatrix2fv(location, 1, 0x0, value[0]); | 0 |
1377 | } | 0 |
1378 | void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat value[3][3]) | - |
1379 | { | - |
1380 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1381 | (void)d;; | - |
1382 | if (location != -1) never evaluated: location != -1 | 0 |
1383 | d->glfuncs->glUniformMatrix3fv(location, 1, 0x0, value[0]); never executed: d->glfuncs->glUniformMatrix3fv(location, 1, 0x0, value[0]); | 0 |
1384 | } | 0 |
1385 | void QOpenGLShaderProgram::setUniformValue(int location, const GLfloat value[4][4]) | - |
1386 | { | - |
1387 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1388 | (void)d;; | - |
1389 | if (location != -1) never evaluated: location != -1 | 0 |
1390 | d->glfuncs->glUniformMatrix4fv(location, 1, 0x0, value[0]); never executed: d->glfuncs->glUniformMatrix4fv(location, 1, 0x0, value[0]); | 0 |
1391 | } | 0 |
1392 | void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat value[2][2]) | - |
1393 | { | - |
1394 | setUniformValue(uniformLocation(name), value); | - |
1395 | } | 0 |
1396 | void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat value[3][3]) | - |
1397 | { | - |
1398 | setUniformValue(uniformLocation(name), value); | - |
1399 | } | 0 |
1400 | void QOpenGLShaderProgram::setUniformValue(const char *name, const GLfloat value[4][4]) | - |
1401 | { | - |
1402 | setUniformValue(uniformLocation(name), value); | - |
1403 | } | 0 |
1404 | void QOpenGLShaderProgram::setUniformValue(int location, const QTransform& value) | - |
1405 | { | - |
1406 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1407 | (void)d;; | - |
1408 | if (location != -1) { never evaluated: location != -1 | 0 |
1409 | GLfloat mat[3][3] = { | - |
1410 | {GLfloat(value.m11()), GLfloat(value.m12()), GLfloat(value.m13())}, | - |
1411 | {GLfloat(value.m21()), GLfloat(value.m22()), GLfloat(value.m23())}, | - |
1412 | {GLfloat(value.m31()), GLfloat(value.m32()), GLfloat(value.m33())} | - |
1413 | }; | - |
1414 | d->glfuncs->glUniformMatrix3fv(location, 1, 0x0, mat[0]); | - |
1415 | } | 0 |
1416 | } | 0 |
1417 | void QOpenGLShaderProgram::setUniformValue | - |
1418 | (const char *name, const QTransform& value) | - |
1419 | { | - |
1420 | setUniformValue(uniformLocation(name), value); | - |
1421 | } | 0 |
1422 | | - |
1423 | | - |
1424 | | - |
1425 | | - |
1426 | | - |
1427 | | - |
1428 | | - |
1429 | void QOpenGLShaderProgram::setUniformValueArray(int location, const GLint *values, int count) | - |
1430 | { | - |
1431 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1432 | (void)d;; | - |
1433 | if (location != -1) never evaluated: location != -1 | 0 |
1434 | d->glfuncs->glUniform1iv(location, count, values); never executed: d->glfuncs->glUniform1iv(location, count, values); | 0 |
1435 | } | 0 |
1436 | void QOpenGLShaderProgram::setUniformValueArray | - |
1437 | (const char *name, const GLint *values, int count) | - |
1438 | { | - |
1439 | setUniformValueArray(uniformLocation(name), values, count); | - |
1440 | } | 0 |
1441 | void QOpenGLShaderProgram::setUniformValueArray(int location, const GLuint *values, int count) | - |
1442 | { | - |
1443 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1444 | (void)d;; | - |
1445 | if (location != -1) never evaluated: location != -1 | 0 |
1446 | d->glfuncs->glUniform1iv(location, count, reinterpret_cast<const GLint *>(values)); never executed: d->glfuncs->glUniform1iv(location, count, reinterpret_cast<const GLint *>(values)); | 0 |
1447 | } | 0 |
1448 | void QOpenGLShaderProgram::setUniformValueArray | - |
1449 | (const char *name, const GLuint *values, int count) | - |
1450 | { | - |
1451 | setUniformValueArray(uniformLocation(name), values, count); | - |
1452 | } | 0 |
1453 | void QOpenGLShaderProgram::setUniformValueArray(int location, const GLfloat *values, int count, int tupleSize) | - |
1454 | { | - |
1455 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1456 | (void)d;; | - |
1457 | if (location != -1) { never evaluated: location != -1 | 0 |
1458 | if (tupleSize == 1) never evaluated: tupleSize == 1 | 0 |
1459 | d->glfuncs->glUniform1fv(location, count, values); never executed: d->glfuncs->glUniform1fv(location, count, values); | 0 |
1460 | else if (tupleSize == 2) never evaluated: tupleSize == 2 | 0 |
1461 | d->glfuncs->glUniform2fv(location, count, values); never executed: d->glfuncs->glUniform2fv(location, count, values); | 0 |
1462 | else if (tupleSize == 3) never evaluated: tupleSize == 3 | 0 |
1463 | d->glfuncs->glUniform3fv(location, count, values); never executed: d->glfuncs->glUniform3fv(location, count, values); | 0 |
1464 | else if (tupleSize == 4) never evaluated: tupleSize == 4 | 0 |
1465 | d->glfuncs->glUniform4fv(location, count, values); never executed: d->glfuncs->glUniform4fv(location, count, values); | 0 |
1466 | else | - |
1467 | QMessageLogger("opengl/qopenglshaderprogram.cpp", 2545, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram::setUniformValue: size" << tupleSize << "not supported"; never executed: QMessageLogger("opengl/qopenglshaderprogram.cpp", 2545, __PRETTY_FUNCTION__).warning() << "QOpenGLShaderProgram::setUniformValue: size" << tupleSize << "not supported"; | 0 |
1468 | } | - |
1469 | } | 0 |
1470 | void QOpenGLShaderProgram::setUniformValueArray | - |
1471 | (const char *name, const GLfloat *values, int count, int tupleSize) | - |
1472 | { | - |
1473 | setUniformValueArray(uniformLocation(name), values, count, tupleSize); | - |
1474 | } | 0 |
1475 | | - |
1476 | | - |
1477 | | - |
1478 | | - |
1479 | | - |
1480 | | - |
1481 | | - |
1482 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector2D *values, int count) | - |
1483 | { | - |
1484 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1485 | (void)d;; | - |
1486 | if (location != -1) never evaluated: location != -1 | 0 |
1487 | d->glfuncs->glUniform2fv(location, count, reinterpret_cast<const GLfloat *>(values)); never executed: d->glfuncs->glUniform2fv(location, count, reinterpret_cast<const GLfloat *>(values)); | 0 |
1488 | } | 0 |
1489 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector2D *values, int count) | - |
1490 | { | - |
1491 | setUniformValueArray(uniformLocation(name), values, count); | - |
1492 | } | 0 |
1493 | | - |
1494 | | - |
1495 | | - |
1496 | | - |
1497 | | - |
1498 | | - |
1499 | | - |
1500 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector3D *values, int count) | - |
1501 | { | - |
1502 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1503 | (void)d;; | - |
1504 | if (location != -1) never evaluated: location != -1 | 0 |
1505 | d->glfuncs->glUniform3fv(location, count, reinterpret_cast<const GLfloat *>(values)); never executed: d->glfuncs->glUniform3fv(location, count, reinterpret_cast<const GLfloat *>(values)); | 0 |
1506 | } | 0 |
1507 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector3D *values, int count) | - |
1508 | { | - |
1509 | setUniformValueArray(uniformLocation(name), values, count); | - |
1510 | } | 0 |
1511 | | - |
1512 | | - |
1513 | | - |
1514 | | - |
1515 | | - |
1516 | | - |
1517 | | - |
1518 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QVector4D *values, int count) | - |
1519 | { | - |
1520 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1521 | (void)d;; | - |
1522 | if (location != -1) never evaluated: location != -1 | 0 |
1523 | d->glfuncs->glUniform4fv(location, count, reinterpret_cast<const GLfloat *>(values)); never executed: d->glfuncs->glUniform4fv(location, count, reinterpret_cast<const GLfloat *>(values)); | 0 |
1524 | } | 0 |
1525 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QVector4D *values, int count) | - |
1526 | { | - |
1527 | setUniformValueArray(uniformLocation(name), values, count); | - |
1528 | } | 0 |
1529 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x2 *values, int count) | - |
1530 | { | - |
1531 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1532 | (void)d;; | - |
1533 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix2x2) == sizeof(GLfloat) * 2 * 2) { d->glfuncs->glUniformMatrix2fv(location, count, 0x0, reinterpret_cast<const GLfloat *>(values[0].constData())); } else { QVarLengthArray<GLfloat> temp(2 * 2 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (2 * 2); ++index2) { temp.data()[2 * 2 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniformMatrix2fv(location, count, 0x0, temp.constData()); }; never evaluated: sizeof(QMatrix2x2) == sizeof(GLfloat) * 2 * 2 never evaluated: index < count never evaluated: index2 < (2 * 2) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1534 | | - |
1535 | } | - |
1536 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x2 *values, int count) | - |
1537 | { | - |
1538 | setUniformValueArray(uniformLocation(name), values, count); | - |
1539 | } | 0 |
1540 | | - |
1541 | | - |
1542 | | - |
1543 | | - |
1544 | | - |
1545 | | - |
1546 | | - |
1547 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x3 *values, int count) | - |
1548 | { | - |
1549 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1550 | (void)d;; | - |
1551 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix2x3) == sizeof(GLfloat) * 2 * 3) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform3fv(location, count * 2, data); } else { QVarLengthArray<GLfloat> temp(2 * 3 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (2 * 3); ++index2) { temp.data()[2 * 3 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform3fv(location, count * 2, temp.constData()); }; never evaluated: sizeof(QMatrix2x3) == sizeof(GLfloat) * 2 * 3 never evaluated: index < count never evaluated: index2 < (2 * 3) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1552 | | - |
1553 | | - |
1554 | } | - |
1555 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x3 *values, int count) | - |
1556 | { | - |
1557 | setUniformValueArray(uniformLocation(name), values, count); | - |
1558 | } | 0 |
1559 | | - |
1560 | | - |
1561 | | - |
1562 | | - |
1563 | | - |
1564 | | - |
1565 | | - |
1566 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix2x4 *values, int count) | - |
1567 | { | - |
1568 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1569 | (void)d;; | - |
1570 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix2x4) == sizeof(GLfloat) * 2 * 4) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform4fv(location, count * 2, data); } else { QVarLengthArray<GLfloat> temp(2 * 4 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (2 * 4); ++index2) { temp.data()[2 * 4 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform4fv(location, count * 2, temp.constData()); }; never evaluated: sizeof(QMatrix2x4) == sizeof(GLfloat) * 2 * 4 never evaluated: index < count never evaluated: index2 < (2 * 4) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1571 | | - |
1572 | | - |
1573 | } | - |
1574 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix2x4 *values, int count) | - |
1575 | { | - |
1576 | setUniformValueArray(uniformLocation(name), values, count); | - |
1577 | } | 0 |
1578 | | - |
1579 | | - |
1580 | | - |
1581 | | - |
1582 | | - |
1583 | | - |
1584 | | - |
1585 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x2 *values, int count) | - |
1586 | { | - |
1587 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1588 | (void)d;; | - |
1589 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix3x2) == sizeof(GLfloat) * 3 * 2) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform2fv(location, count * 3, data); } else { QVarLengthArray<GLfloat> temp(3 * 2 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (3 * 2); ++index2) { temp.data()[3 * 2 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform2fv(location, count * 3, temp.constData()); }; never evaluated: sizeof(QMatrix3x2) == sizeof(GLfloat) * 3 * 2 never evaluated: index < count never evaluated: index2 < (3 * 2) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1590 | | - |
1591 | | - |
1592 | } | - |
1593 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x2 *values, int count) | - |
1594 | { | - |
1595 | setUniformValueArray(uniformLocation(name), values, count); | - |
1596 | } | 0 |
1597 | | - |
1598 | | - |
1599 | | - |
1600 | | - |
1601 | | - |
1602 | | - |
1603 | | - |
1604 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x3 *values, int count) | - |
1605 | { | - |
1606 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1607 | (void)d;; | - |
1608 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix3x3) == sizeof(GLfloat) * 3 * 3) { d->glfuncs->glUniformMatrix3fv(location, count, 0x0, reinterpret_cast<const GLfloat *>(values[0].constData())); } else { QVarLengthArray<GLfloat> temp(3 * 3 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (3 * 3); ++index2) { temp.data()[3 * 3 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniformMatrix3fv(location, count, 0x0, temp.constData()); }; never evaluated: sizeof(QMatrix3x3) == sizeof(GLfloat) * 3 * 3 never evaluated: index < count never evaluated: index2 < (3 * 3) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1609 | | - |
1610 | } | - |
1611 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x3 *values, int count) | - |
1612 | { | - |
1613 | setUniformValueArray(uniformLocation(name), values, count); | - |
1614 | } | 0 |
1615 | | - |
1616 | | - |
1617 | | - |
1618 | | - |
1619 | | - |
1620 | | - |
1621 | | - |
1622 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix3x4 *values, int count) | - |
1623 | { | - |
1624 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1625 | (void)d;; | - |
1626 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix3x4) == sizeof(GLfloat) * 3 * 4) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform4fv(location, count * 3, data); } else { QVarLengthArray<GLfloat> temp(3 * 4 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (3 * 4); ++index2) { temp.data()[3 * 4 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform4fv(location, count * 3, temp.constData()); }; never evaluated: sizeof(QMatrix3x4) == sizeof(GLfloat) * 3 * 4 never evaluated: index < count never evaluated: index2 < (3 * 4) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1627 | | - |
1628 | | - |
1629 | } | - |
1630 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix3x4 *values, int count) | - |
1631 | { | - |
1632 | setUniformValueArray(uniformLocation(name), values, count); | - |
1633 | } | 0 |
1634 | | - |
1635 | | - |
1636 | | - |
1637 | | - |
1638 | | - |
1639 | | - |
1640 | | - |
1641 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x2 *values, int count) | - |
1642 | { | - |
1643 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1644 | (void)d;; | - |
1645 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix4x2) == sizeof(GLfloat) * 4 * 2) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform2fv(location, count * 4, data); } else { QVarLengthArray<GLfloat> temp(4 * 2 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (4 * 2); ++index2) { temp.data()[4 * 2 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform2fv(location, count * 4, temp.constData()); }; never evaluated: sizeof(QMatrix4x2) == sizeof(GLfloat) * 4 * 2 never evaluated: index < count never evaluated: index2 < (4 * 2) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1646 | | - |
1647 | | - |
1648 | } | - |
1649 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x2 *values, int count) | - |
1650 | { | - |
1651 | setUniformValueArray(uniformLocation(name), values, count); | - |
1652 | } | 0 |
1653 | | - |
1654 | | - |
1655 | | - |
1656 | | - |
1657 | | - |
1658 | | - |
1659 | | - |
1660 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x3 *values, int count) | - |
1661 | { | - |
1662 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1663 | (void)d;; | - |
1664 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix4x3) == sizeof(GLfloat) * 4 * 3) { const GLfloat *data = reinterpret_cast<const GLfloat *> (values[0].constData()); d->glfuncs->glUniform3fv(location, count * 4, data); } else { QVarLengthArray<GLfloat> temp(4 * 3 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (4 * 3); ++index2) { temp.data()[4 * 3 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniform3fv(location, count * 4, temp.constData()); }; never evaluated: sizeof(QMatrix4x3) == sizeof(GLfloat) * 4 * 3 never evaluated: index < count never evaluated: index2 < (4 * 3) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1665 | | - |
1666 | | - |
1667 | } | - |
1668 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x3 *values, int count) | - |
1669 | { | - |
1670 | setUniformValueArray(uniformLocation(name), values, count); | - |
1671 | } | 0 |
1672 | | - |
1673 | | - |
1674 | | - |
1675 | | - |
1676 | | - |
1677 | | - |
1678 | | - |
1679 | void QOpenGLShaderProgram::setUniformValueArray(int location, const QMatrix4x4 *values, int count) | - |
1680 | { | - |
1681 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1682 | (void)d;; | - |
1683 | if (location == -1 || count <= 0) return; if (sizeof(QMatrix4x4) == sizeof(GLfloat) * 4 * 4) { d->glfuncs->glUniformMatrix4fv(location, count, 0x0, reinterpret_cast<const GLfloat *>(values[0].constData())); } else { QVarLengthArray<GLfloat> temp(4 * 4 * count); for (int index = 0; index < count; ++index) { for (int index2 = 0; index2 < (4 * 4); ++index2) { temp.data()[4 * 4 * index + index2] = values[index].constData()[index2]; } } d->glfuncs->glUniformMatrix4fv(location, count, 0x0, temp.constData()); }; never evaluated: sizeof(QMatrix4x4) == sizeof(GLfloat) * 4 * 4 never evaluated: index < count never evaluated: index2 < (4 * 4) never evaluated: location == -1 never evaluated: count <= 0 | 0 |
1684 | | - |
1685 | } | - |
1686 | void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4x4 *values, int count) | - |
1687 | { | - |
1688 | setUniformValueArray(uniformLocation(name), values, count); | - |
1689 | } | 0 |
1690 | bool QOpenGLShaderProgram::hasOpenGLShaderPrograms(QOpenGLContext *context) | - |
1691 | { | - |
1692 | | - |
1693 | if (!context) never evaluated: !context | 0 |
1694 | context = QOpenGLContext::currentContext(); never executed: context = QOpenGLContext::currentContext(); | 0 |
1695 | if (!context) never evaluated: !context | 0 |
1696 | return false; never executed: return false; | 0 |
1697 | return QOpenGLFunctions(context).hasOpenGLFeature(QOpenGLFunctions::Shaders); never executed: return QOpenGLFunctions(context).hasOpenGLFeature(QOpenGLFunctions::Shaders); | 0 |
1698 | | - |
1699 | | - |
1700 | | - |
1701 | | - |
1702 | } | - |
1703 | | - |
1704 | | - |
1705 | | - |
1706 | | - |
1707 | void QOpenGLShaderProgram::shaderDestroyed() | - |
1708 | { | - |
1709 | QOpenGLShaderProgramPrivate * const d = d_func(); | - |
1710 | QOpenGLShader *shader = qobject_cast<QOpenGLShader *>(sender()); | - |
1711 | if (shader && !d->removingShaders) never evaluated: !d->removingShaders | 0 |
1712 | removeShader(shader); never executed: removeShader(shader); | 0 |
1713 | } | 0 |
1714 | bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context) | - |
1715 | { | - |
1716 | if (!context) never evaluated: !context | 0 |
1717 | context = QOpenGLContext::currentContext(); never executed: context = QOpenGLContext::currentContext(); | 0 |
1718 | if (!context) never evaluated: !context | 0 |
1719 | return false; never executed: return false; | 0 |
1720 | | - |
1721 | if ((type & ~(Vertex | Fragment)) || type == 0) never evaluated: (type & ~(Vertex | Fragment)) never evaluated: type == 0 | 0 |
1722 | return false; never executed: return false; | 0 |
1723 | | - |
1724 | return true; never executed: return true; | 0 |
1725 | } | - |
1726 | | - |
1727 | | - |
1728 | | - |
| | |