7#include <QOpenGLContext>
8#include <private/qopenglextensions_p.h>
14 functions = context->functions();
19 const char *renderer =
reinterpret_cast<
const char *>(context->functions()->glGetString(GL_RENDERER));
21 reinterpret_cast<
const char *>(context->functions()->glGetString(GL_VERSION));
23 if (renderer && strstr(renderer,
"AMD Radeon HD"))
26 if (version && strstr(version,
"Mesa"))
29 if (allowDSA && !context->isOpenGLES()
30 && context->hasExtension(QByteArrayLiteral(
"GL_EXT_direct_state_access"))) {
31 TextureParameteriEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint )>(context->getProcAddress(
"glTextureParameteriEXT"));
32 TextureParameterivEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLint *)>(context->getProcAddress(
"glTextureParameterivEXT"));
33 TextureParameterfEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLfloat )>(context->getProcAddress(
"glTextureParameterfEXT"));
34 TextureParameterfvEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLfloat *)>(context->getProcAddress(
"glTextureParameterfvEXT"));
35 GenerateTextureMipmapEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress(
"glGenerateTextureMipmapEXT"));
36 TextureStorage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage3DEXT"));
37 TextureStorage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage2DEXT"));
38 TextureStorage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTextureStorage1DEXT"));
39 TextureStorage3DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage3DMultisampleEXT"));
40 TextureStorage2DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage2DMultisampleEXT"));
41 TextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage3DEXT"));
42 TextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage2DEXT"));
43 TextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage1DEXT"));
44 TextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage3DEXT"));
45 TextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage2DEXT"));
46 TextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage1DEXT"));
47 CompressedTextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage1DEXT"));
48 CompressedTextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage2DEXT"));
49 CompressedTextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage3DEXT"));
50 CompressedTextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage1DEXT"));
51 CompressedTextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage2DEXT"));
52 CompressedTextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage3DEXT"));
55 TextureParameteri = &QOpenGLTextureHelper::dsa_TextureParameteri;
56 TextureParameteriv = &QOpenGLTextureHelper::dsa_TextureParameteriv;
57 TextureParameterf = &QOpenGLTextureHelper::dsa_TextureParameterf;
58 TextureParameterfv = &QOpenGLTextureHelper::dsa_TextureParameterfv;
59 GenerateTextureMipmap = &QOpenGLTextureHelper::dsa_GenerateTextureMipmap;
60 TextureStorage3D = &QOpenGLTextureHelper::dsa_TextureStorage3D;
61 TextureStorage2D = &QOpenGLTextureHelper::dsa_TextureStorage2D;
62 TextureStorage1D = &QOpenGLTextureHelper::dsa_TextureStorage1D;
63 TextureStorage3DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage3DMultisample;
64 TextureStorage2DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage2DMultisample;
65 TextureImage3D = &QOpenGLTextureHelper::dsa_TextureImage3D;
66 TextureImage2D = &QOpenGLTextureHelper::dsa_TextureImage2D;
67 TextureImage1D = &QOpenGLTextureHelper::dsa_TextureImage1D;
68 TextureSubImage3D = &QOpenGLTextureHelper::dsa_TextureSubImage3D;
69 TextureSubImage2D = &QOpenGLTextureHelper::dsa_TextureSubImage2D;
70 TextureSubImage1D = &QOpenGLTextureHelper::dsa_TextureSubImage1D;
71 CompressedTextureSubImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D;
72 CompressedTextureSubImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage2D;
73 CompressedTextureSubImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage3D;
74 CompressedTextureImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureImage1D;
75 CompressedTextureImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureImage2D;
76 CompressedTextureImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureImage3D;
79 TextureParameteri = &QOpenGLTextureHelper::qt_TextureParameteri;
80 TextureParameteriv = &QOpenGLTextureHelper::qt_TextureParameteriv;
81 TextureParameterf = &QOpenGLTextureHelper::qt_TextureParameterf;
82 TextureParameterfv = &QOpenGLTextureHelper::qt_TextureParameterfv;
83 GenerateTextureMipmap = &QOpenGLTextureHelper::qt_GenerateTextureMipmap;
84 TextureStorage3D = &QOpenGLTextureHelper::qt_TextureStorage3D;
85 TextureStorage2D = &QOpenGLTextureHelper::qt_TextureStorage2D;
86 TextureStorage1D = &QOpenGLTextureHelper::qt_TextureStorage1D;
87 TextureStorage3DMultisample = &QOpenGLTextureHelper::qt_TextureStorage3DMultisample;
88 TextureStorage2DMultisample = &QOpenGLTextureHelper::qt_TextureStorage2DMultisample;
89 TextureImage3D = &QOpenGLTextureHelper::qt_TextureImage3D;
90 TextureImage2D = &QOpenGLTextureHelper::qt_TextureImage2D;
91 TextureImage1D = &QOpenGLTextureHelper::qt_TextureImage1D;
92 TextureSubImage3D = &QOpenGLTextureHelper::qt_TextureSubImage3D;
93 TextureSubImage2D = &QOpenGLTextureHelper::qt_TextureSubImage2D;
94 TextureSubImage1D = &QOpenGLTextureHelper::qt_TextureSubImage1D;
95 CompressedTextureSubImage1D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage1D;
96 CompressedTextureSubImage2D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage2D;
97 CompressedTextureSubImage3D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage3D;
98 CompressedTextureImage1D = &QOpenGLTextureHelper::qt_CompressedTextureImage1D;
99 CompressedTextureImage2D = &QOpenGLTextureHelper::qt_CompressedTextureImage2D;
100 CompressedTextureImage3D = &QOpenGLTextureHelper::qt_CompressedTextureImage3D;
104 if (!context->isOpenGLES()
105 && context->hasExtension(QByteArrayLiteral(
"GL_NV_texture_multisample"))) {
106 TextureImage3DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage3DMultisampleNV"));
107 TextureImage2DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage2DMultisampleNV"));
109 TextureImage3DMultisample = &QOpenGLTextureHelper::dsa_TextureImage3DMultisample;
110 TextureImage2DMultisample = &QOpenGLTextureHelper::dsa_TextureImage2DMultisample;
112 TextureImage3DMultisample = &QOpenGLTextureHelper::qt_TextureImage3DMultisample;
113 TextureImage2DMultisample = &QOpenGLTextureHelper::qt_TextureImage2DMultisample;
116#if QT_CONFIG(opengles2)
120 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
121 QOpenGLFunctionsPrivate *base = extra;
130 GetCompressedTexImage = 0;
131 CompressedTexSubImage1D = 0;
132 CompressedTexSubImage2D = base->f.CompressedTexSubImage2D ? base->f.CompressedTexSubImage2D : ::glCompressedTexSubImage2D;
133 CompressedTexImage1D = 0;
134 CompressedTexImage2D = base->f.CompressedTexImage2D ? base->f.CompressedTexImage2D : ::glCompressedTexImage2D;
135 ActiveTexture = base->f.ActiveTexture ? base->f.ActiveTexture : ::glActiveTexture;
138 GenerateMipmap = base->f.GenerateMipmap ? base->f.GenerateMipmap : ::glGenerateMipmap;
141 TexImage3DMultisample = 0;
142 TexImage2DMultisample = 0;
145 QOpenGLContext *ctx = QOpenGLContext::currentContext();
146 if (ctx->format().majorVersion() >= 3) {
148 TexStorage3D = extra->f.TexStorage3D;
149 TexStorage2D = extra->f.TexStorage2D;
157 TexStorage3DMultisample = 0;
158 TexStorage2DMultisample = 0;
163 if (ctx->format().version() >= std::pair(3, 1))
164 TexStorage2DMultisample = extra->f.TexStorage2DMultisample;
167 if (context->isOpenGLES() && context->hasExtension(QByteArrayLiteral(
"GL_OES_texture_3D"))) {
168 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexImage3DOES"));
169 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexSubImage3DOES"));
170 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexImage3DOES"));
171 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexSubImage3DOES"));
173 QOpenGLContext *ctx = QOpenGLContext::currentContext();
174 if (ctx->isOpenGLES() && ctx->format().majorVersion() >= 3) {
176 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
177 TexImage3D = extra->f.TexImage3D;
178 TexSubImage3D = extra->f.TexSubImage3D;
179 CompressedTexImage3D = extra->f.CompressedTexImage3D;
180 CompressedTexSubImage3D = extra->f.CompressedTexSubImage3D;
183 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage3D"));
184 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage3D"));
187 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage3D"));
188 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage3D"));
192#if !QT_CONFIG(opengles2)
194 TexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage1D"));
195 TexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage1D"));
198 GetCompressedTexImage =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress(
"glGetCompressedTexImage"));
199 CompressedTexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage1D"));
200 CompressedTexSubImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage2D"));
201 CompressedTexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage1D"));
202 CompressedTexImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage2D"));
203 ActiveTexture =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glActiveTexture"));
206 GenerateMipmap =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glGenerateMipmap"));
209 TexImage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage3DMultisample"));
210 TexImage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage2DMultisample"));
213 TexStorage3D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage3D"));
214 TexStorage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage2D"));
215 TexStorage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTexStorage1D"));
218 TexStorage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage3DMultisample"));
219 TexStorage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage2DMultisample"));
220 TexBufferRange =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress(
"glTexBufferRange"));
221 TextureView =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress(
"glTextureView"));
225void QOpenGLTextureHelper::dsa_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
227 Q_UNUSED(bindingTarget);
228 TextureParameteriEXT(texture, target, pname, param);
231void QOpenGLTextureHelper::dsa_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
233 Q_UNUSED(bindingTarget);
234 TextureParameterivEXT(texture, target, pname, params);
237void QOpenGLTextureHelper::dsa_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
239 Q_UNUSED(bindingTarget);
240 TextureParameterfEXT(texture, target, pname, param);
243void QOpenGLTextureHelper::dsa_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
245 Q_UNUSED(bindingTarget);
246 TextureParameterfvEXT(texture, target, pname, params);
249void QOpenGLTextureHelper::dsa_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
251 Q_UNUSED(bindingTarget);
252 GenerateTextureMipmapEXT(texture, target);
255void QOpenGLTextureHelper::dsa_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
257 Q_UNUSED(bindingTarget);
258 TextureStorage3DEXT(texture, target, levels, internalFormat, width, height, depth);
261void QOpenGLTextureHelper::dsa_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
263 Q_UNUSED(bindingTarget);
264 TextureStorage2DEXT(texture, target, levels, internalFormat, width, height);
267void QOpenGLTextureHelper::dsa_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
269 Q_UNUSED(bindingTarget);
270 TextureStorage1DEXT(texture, target, levels, internalFormat, width);
273void QOpenGLTextureHelper::dsa_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
275 Q_UNUSED(bindingTarget);
276 TextureStorage3DMultisampleEXT(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
279void QOpenGLTextureHelper::dsa_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
281 Q_UNUSED(bindingTarget);
282 TextureStorage2DMultisampleEXT(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
285void QOpenGLTextureHelper::dsa_TextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
287 Q_UNUSED(bindingTarget);
288 TextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, format, type, pixels);
291void QOpenGLTextureHelper::dsa_TextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
293 Q_UNUSED(bindingTarget);
294 TextureImage2DEXT(texture, target, level, internalFormat, width, height, border, format, type, pixels);
297void QOpenGLTextureHelper::dsa_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
299 Q_UNUSED(bindingTarget);
300 TextureImage1DEXT(texture, target, level, internalFormat, width, border, format, type, pixels);
303void QOpenGLTextureHelper::dsa_TextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
const GLvoid *pixels)
305 Q_UNUSED(bindingTarget);
306 TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
309void QOpenGLTextureHelper::dsa_TextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type,
const GLvoid *pixels)
311 Q_UNUSED(bindingTarget);
312 TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
315void QOpenGLTextureHelper::dsa_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
317 Q_UNUSED(bindingTarget);
318 TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);
321void QOpenGLTextureHelper::dsa_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
323 Q_UNUSED(bindingTarget);
324 TextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
327void QOpenGLTextureHelper::dsa_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
329 Q_UNUSED(bindingTarget);
330 TextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
333void QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
335 Q_UNUSED(bindingTarget);
336 CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);
339void QOpenGLTextureHelper::dsa_CompressedTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize,
const GLvoid *bits)
341 Q_UNUSED(bindingTarget);
342 CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
345void QOpenGLTextureHelper::dsa_CompressedTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize,
const GLvoid *bits)
347 Q_UNUSED(bindingTarget);
348 CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
351void QOpenGLTextureHelper::dsa_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
353 Q_UNUSED(bindingTarget);
354 CompressedTextureImage1DEXT(texture, target, level, internalFormat, width, border, imageSize, bits);
357void QOpenGLTextureHelper::dsa_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
359 Q_UNUSED(bindingTarget);
360 CompressedTextureImage2DEXT(texture, target, level, internalFormat, width, height, border, imageSize, bits);
363void QOpenGLTextureHelper::dsa_CompressedTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize,
const GLvoid *bits)
365 Q_UNUSED(bindingTarget);
366 CompressedTextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, imageSize, bits);
374 TextureBinder(QOpenGLFunctions *functions, GLuint texture, GLenum target, GLenum bindingTarget)
375 : m_functions(functions)
396 m_functions->glGetIntegerv(bindingTarget, &m_oldTexture);
397 m_functions->glBindTexture(m_target, texture);
402 m_functions->glBindTexture(m_target, m_oldTexture);
406 QOpenGLFunctions *m_functions;
413void QOpenGLTextureHelper::qt_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
415 TextureBinder binder(functions, texture, target, bindingTarget);
416 functions->glTexParameteri(target, pname, param);
419void QOpenGLTextureHelper::qt_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
421 TextureBinder binder(functions, texture, target, bindingTarget);
422 functions->glTexParameteriv(target, pname, params);
425void QOpenGLTextureHelper::qt_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
427 TextureBinder binder(functions, texture, target, bindingTarget);
428 functions->glTexParameterf(target, pname, param);
431void QOpenGLTextureHelper::qt_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
433 TextureBinder binder(functions, texture, target, bindingTarget);
434 functions->glTexParameterfv(target, pname, params);
437void QOpenGLTextureHelper::qt_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
439 TextureBinder binder(functions, texture, target, bindingTarget);
440 functions->glGenerateMipmap(target);
443void QOpenGLTextureHelper::qt_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
445 TextureBinder binder(functions, texture, target, bindingTarget);
449void QOpenGLTextureHelper::qt_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
451 TextureBinder binder(functions, texture, target, bindingTarget);
455void QOpenGLTextureHelper::qt_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
457 TextureBinder binder(functions, texture, target, bindingTarget);
461void QOpenGLTextureHelper::qt_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
463 TextureBinder binder(functions, texture, target, bindingTarget);
467void QOpenGLTextureHelper::qt_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
469 TextureBinder binder(functions, texture, target, bindingTarget);
473void QOpenGLTextureHelper::qt_TextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
475 TextureBinder binder(functions, texture, target, bindingTarget);
479void QOpenGLTextureHelper::qt_TextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
481 TextureBinder binder(functions, texture, target, bindingTarget);
482 functions->glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
485void QOpenGLTextureHelper::qt_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
487 TextureBinder binder(functions, texture, target, bindingTarget);
491void QOpenGLTextureHelper::qt_TextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
const GLvoid *pixels)
493 TextureBinder binder(functions, texture, target, bindingTarget);
494 glTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, type
, pixels
);
497void QOpenGLTextureHelper::qt_TextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type,
const GLvoid *pixels)
499 TextureBinder binder(functions, texture, target, bindingTarget);
500 functions->glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
503void QOpenGLTextureHelper::qt_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
505 TextureBinder binder(functions, texture, target, bindingTarget);
509void QOpenGLTextureHelper::qt_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
511 TextureBinder binder(functions, texture, target, bindingTarget);
515void QOpenGLTextureHelper::qt_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
517 TextureBinder binder(functions, texture, target, bindingTarget);
521void QOpenGLTextureHelper::qt_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
523 TextureBinder binder(functions, texture, target, bindingTarget);
527void QOpenGLTextureHelper::qt_CompressedTextureSubImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize,
const GLvoid *bits)
529 TextureBinder binder(functions, texture, target, bindingTarget);
533void QOpenGLTextureHelper::qt_CompressedTextureSubImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize,
const GLvoid *bits)
535 TextureBinder binder(functions, texture, target, bindingTarget);
536 glCompressedTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, imageSize
, bits
);
539void QOpenGLTextureHelper::qt_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
541 TextureBinder binder(functions, texture, target, bindingTarget);
545void QOpenGLTextureHelper::qt_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
547 TextureBinder binder(functions, texture, target, bindingTarget);
551void QOpenGLTextureHelper::qt_CompressedTextureImage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize,
const GLvoid *bits)
553 TextureBinder binder(functions, texture, target, bindingTarget);
void glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)
void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
void glTexImage3D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
void glTexStorage3D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)
void glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)
void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
void glTexImage1D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
void glTexStorage2D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)
void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
Combined button and popup list for selecting options.
#define QOPENGLF_APIENTRYP
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y
#define GL_TEXTURE_CUBE_MAP
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z
#define GL_TEXTURE_BINDING_CUBE_MAP
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X