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 if (renderer && strstr(renderer,
"AMD Radeon HD"))
24 if (allowDSA && !context->isOpenGLES()
25 && context->hasExtension(QByteArrayLiteral(
"GL_EXT_direct_state_access"))) {
26 TextureParameteriEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint )>(context->getProcAddress(
"glTextureParameteriEXT"));
27 TextureParameterivEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLint *)>(context->getProcAddress(
"glTextureParameterivEXT"));
28 TextureParameterfEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLfloat )>(context->getProcAddress(
"glTextureParameterfEXT"));
29 TextureParameterfvEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLfloat *)>(context->getProcAddress(
"glTextureParameterfvEXT"));
30 GenerateTextureMipmapEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress(
"glGenerateTextureMipmapEXT"));
31 TextureStorage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage3DEXT"));
32 TextureStorage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage2DEXT"));
33 TextureStorage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTextureStorage1DEXT"));
34 TextureStorage3DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage3DMultisampleEXT"));
35 TextureStorage2DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage2DMultisampleEXT"));
36 TextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage3DEXT"));
37 TextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage2DEXT"));
38 TextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage1DEXT"));
39 TextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage3DEXT"));
40 TextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage2DEXT"));
41 TextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage1DEXT"));
42 CompressedTextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage1DEXT"));
43 CompressedTextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage2DEXT"));
44 CompressedTextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage3DEXT"));
45 CompressedTextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage1DEXT"));
46 CompressedTextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage2DEXT"));
47 CompressedTextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage3DEXT"));
50 TextureParameteri = &QOpenGLTextureHelper::dsa_TextureParameteri;
51 TextureParameteriv = &QOpenGLTextureHelper::dsa_TextureParameteriv;
52 TextureParameterf = &QOpenGLTextureHelper::dsa_TextureParameterf;
53 TextureParameterfv = &QOpenGLTextureHelper::dsa_TextureParameterfv;
54 GenerateTextureMipmap = &QOpenGLTextureHelper::dsa_GenerateTextureMipmap;
55 TextureStorage3D = &QOpenGLTextureHelper::dsa_TextureStorage3D;
56 TextureStorage2D = &QOpenGLTextureHelper::dsa_TextureStorage2D;
57 TextureStorage1D = &QOpenGLTextureHelper::dsa_TextureStorage1D;
58 TextureStorage3DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage3DMultisample;
59 TextureStorage2DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage2DMultisample;
60 TextureImage3D = &QOpenGLTextureHelper::dsa_TextureImage3D;
61 TextureImage2D = &QOpenGLTextureHelper::dsa_TextureImage2D;
62 TextureImage1D = &QOpenGLTextureHelper::dsa_TextureImage1D;
63 TextureSubImage3D = &QOpenGLTextureHelper::dsa_TextureSubImage3D;
64 TextureSubImage2D = &QOpenGLTextureHelper::dsa_TextureSubImage2D;
65 TextureSubImage1D = &QOpenGLTextureHelper::dsa_TextureSubImage1D;
66 CompressedTextureSubImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D;
67 CompressedTextureSubImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage2D;
68 CompressedTextureSubImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage3D;
69 CompressedTextureImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureImage1D;
70 CompressedTextureImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureImage2D;
71 CompressedTextureImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureImage3D;
74 TextureParameteri = &QOpenGLTextureHelper::qt_TextureParameteri;
75 TextureParameteriv = &QOpenGLTextureHelper::qt_TextureParameteriv;
76 TextureParameterf = &QOpenGLTextureHelper::qt_TextureParameterf;
77 TextureParameterfv = &QOpenGLTextureHelper::qt_TextureParameterfv;
78 GenerateTextureMipmap = &QOpenGLTextureHelper::qt_GenerateTextureMipmap;
79 TextureStorage3D = &QOpenGLTextureHelper::qt_TextureStorage3D;
80 TextureStorage2D = &QOpenGLTextureHelper::qt_TextureStorage2D;
81 TextureStorage1D = &QOpenGLTextureHelper::qt_TextureStorage1D;
82 TextureStorage3DMultisample = &QOpenGLTextureHelper::qt_TextureStorage3DMultisample;
83 TextureStorage2DMultisample = &QOpenGLTextureHelper::qt_TextureStorage2DMultisample;
84 TextureImage3D = &QOpenGLTextureHelper::qt_TextureImage3D;
85 TextureImage2D = &QOpenGLTextureHelper::qt_TextureImage2D;
86 TextureImage1D = &QOpenGLTextureHelper::qt_TextureImage1D;
87 TextureSubImage3D = &QOpenGLTextureHelper::qt_TextureSubImage3D;
88 TextureSubImage2D = &QOpenGLTextureHelper::qt_TextureSubImage2D;
89 TextureSubImage1D = &QOpenGLTextureHelper::qt_TextureSubImage1D;
90 CompressedTextureSubImage1D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage1D;
91 CompressedTextureSubImage2D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage2D;
92 CompressedTextureSubImage3D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage3D;
93 CompressedTextureImage1D = &QOpenGLTextureHelper::qt_CompressedTextureImage1D;
94 CompressedTextureImage2D = &QOpenGLTextureHelper::qt_CompressedTextureImage2D;
95 CompressedTextureImage3D = &QOpenGLTextureHelper::qt_CompressedTextureImage3D;
99 if (!context->isOpenGLES()
100 && context->hasExtension(QByteArrayLiteral(
"GL_NV_texture_multisample"))) {
101 TextureImage3DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage3DMultisampleNV"));
102 TextureImage2DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage2DMultisampleNV"));
104 TextureImage3DMultisample = &QOpenGLTextureHelper::dsa_TextureImage3DMultisample;
105 TextureImage2DMultisample = &QOpenGLTextureHelper::dsa_TextureImage2DMultisample;
107 TextureImage3DMultisample = &QOpenGLTextureHelper::qt_TextureImage3DMultisample;
108 TextureImage2DMultisample = &QOpenGLTextureHelper::qt_TextureImage2DMultisample;
111#if QT_CONFIG(opengles2)
115 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
116 QOpenGLFunctionsPrivate *base = extra;
125 GetCompressedTexImage = 0;
126 CompressedTexSubImage1D = 0;
127 CompressedTexSubImage2D = base->f.CompressedTexSubImage2D ? base->f.CompressedTexSubImage2D : ::glCompressedTexSubImage2D;
128 CompressedTexImage1D = 0;
129 CompressedTexImage2D = base->f.CompressedTexImage2D ? base->f.CompressedTexImage2D : ::glCompressedTexImage2D;
130 ActiveTexture = base->f.ActiveTexture ? base->f.ActiveTexture : ::glActiveTexture;
133 GenerateMipmap = base->f.GenerateMipmap ? base->f.GenerateMipmap : ::glGenerateMipmap;
136 TexImage3DMultisample = 0;
137 TexImage2DMultisample = 0;
140 QOpenGLContext *ctx = QOpenGLContext::currentContext();
141 if (ctx->format().majorVersion() >= 3) {
143 TexStorage3D = extra->f.TexStorage3D;
144 TexStorage2D = extra->f.TexStorage2D;
152 TexStorage3DMultisample = 0;
153 TexStorage2DMultisample = 0;
158 if (ctx->format().version() >= std::pair(3, 1))
159 TexStorage2DMultisample = extra->f.TexStorage2DMultisample;
162 if (context->isOpenGLES() && context->hasExtension(QByteArrayLiteral(
"GL_OES_texture_3D"))) {
163 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexImage3DOES"));
164 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexSubImage3DOES"));
165 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexImage3DOES"));
166 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexSubImage3DOES"));
168 QOpenGLContext *ctx = QOpenGLContext::currentContext();
169 if (ctx->isOpenGLES() && ctx->format().majorVersion() >= 3) {
171 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
172 TexImage3D = extra->f.TexImage3D;
173 TexSubImage3D = extra->f.TexSubImage3D;
174 CompressedTexImage3D = extra->f.CompressedTexImage3D;
175 CompressedTexSubImage3D = extra->f.CompressedTexSubImage3D;
178 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage3D"));
179 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage3D"));
182 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage3D"));
183 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage3D"));
187#if !QT_CONFIG(opengles2)
189 TexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage1D"));
190 TexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage1D"));
193 GetCompressedTexImage =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress(
"glGetCompressedTexImage"));
194 CompressedTexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage1D"));
195 CompressedTexSubImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage2D"));
196 CompressedTexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage1D"));
197 CompressedTexImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage2D"));
198 ActiveTexture =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glActiveTexture"));
201 GenerateMipmap =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glGenerateMipmap"));
204 TexImage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage3DMultisample"));
205 TexImage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage2DMultisample"));
208 TexStorage3D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage3D"));
209 TexStorage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage2D"));
210 TexStorage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTexStorage1D"));
213 TexStorage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage3DMultisample"));
214 TexStorage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage2DMultisample"));
215 TexBufferRange =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress(
"glTexBufferRange"));
216 TextureView =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress(
"glTextureView"));
220void QOpenGLTextureHelper::dsa_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
222 Q_UNUSED(bindingTarget);
223 TextureParameteriEXT(texture, target, pname, param);
226void QOpenGLTextureHelper::dsa_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
228 Q_UNUSED(bindingTarget);
229 TextureParameterivEXT(texture, target, pname, params);
232void QOpenGLTextureHelper::dsa_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
234 Q_UNUSED(bindingTarget);
235 TextureParameterfEXT(texture, target, pname, param);
238void QOpenGLTextureHelper::dsa_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
240 Q_UNUSED(bindingTarget);
241 TextureParameterfvEXT(texture, target, pname, params);
244void QOpenGLTextureHelper::dsa_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
246 Q_UNUSED(bindingTarget);
247 GenerateTextureMipmapEXT(texture, target);
250void QOpenGLTextureHelper::dsa_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
252 Q_UNUSED(bindingTarget);
253 TextureStorage3DEXT(texture, target, levels, internalFormat, width, height, depth);
256void QOpenGLTextureHelper::dsa_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
258 Q_UNUSED(bindingTarget);
259 TextureStorage2DEXT(texture, target, levels, internalFormat, width, height);
262void QOpenGLTextureHelper::dsa_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
264 Q_UNUSED(bindingTarget);
265 TextureStorage1DEXT(texture, target, levels, internalFormat, width);
268void QOpenGLTextureHelper::dsa_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
270 Q_UNUSED(bindingTarget);
271 TextureStorage3DMultisampleEXT(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
274void QOpenGLTextureHelper::dsa_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
276 Q_UNUSED(bindingTarget);
277 TextureStorage2DMultisampleEXT(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
280void 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)
282 Q_UNUSED(bindingTarget);
283 TextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, format, type, pixels);
286void 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)
288 Q_UNUSED(bindingTarget);
289 TextureImage2DEXT(texture, target, level, internalFormat, width, height, border, format, type, pixels);
292void QOpenGLTextureHelper::dsa_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
294 Q_UNUSED(bindingTarget);
295 TextureImage1DEXT(texture, target, level, internalFormat, width, border, format, type, pixels);
298void 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)
300 Q_UNUSED(bindingTarget);
301 TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
304void 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)
306 Q_UNUSED(bindingTarget);
307 TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
310void QOpenGLTextureHelper::dsa_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
312 Q_UNUSED(bindingTarget);
313 TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);
316void QOpenGLTextureHelper::dsa_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
318 Q_UNUSED(bindingTarget);
319 TextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
322void QOpenGLTextureHelper::dsa_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
324 Q_UNUSED(bindingTarget);
325 TextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
328void QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
330 Q_UNUSED(bindingTarget);
331 CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);
334void 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)
336 Q_UNUSED(bindingTarget);
337 CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
340void 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)
342 Q_UNUSED(bindingTarget);
343 CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
346void QOpenGLTextureHelper::dsa_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
348 Q_UNUSED(bindingTarget);
349 CompressedTextureImage1DEXT(texture, target, level, internalFormat, width, border, imageSize, bits);
352void QOpenGLTextureHelper::dsa_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
354 Q_UNUSED(bindingTarget);
355 CompressedTextureImage2DEXT(texture, target, level, internalFormat, width, height, border, imageSize, bits);
358void 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)
360 Q_UNUSED(bindingTarget);
361 CompressedTextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, imageSize, bits);
369 TextureBinder(QOpenGLFunctions *functions, GLuint texture, GLenum target, GLenum bindingTarget)
370 : m_functions(functions)
391 m_functions->glGetIntegerv(bindingTarget, &m_oldTexture);
392 m_functions->glBindTexture(m_target, texture);
397 m_functions->glBindTexture(m_target, m_oldTexture);
401 QOpenGLFunctions *m_functions;
408void QOpenGLTextureHelper::qt_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
410 TextureBinder binder(functions, texture, target, bindingTarget);
411 functions->glTexParameteri(target, pname, param);
414void QOpenGLTextureHelper::qt_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
416 TextureBinder binder(functions, texture, target, bindingTarget);
417 functions->glTexParameteriv(target, pname, params);
420void QOpenGLTextureHelper::qt_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
422 TextureBinder binder(functions, texture, target, bindingTarget);
423 functions->glTexParameterf(target, pname, param);
426void QOpenGLTextureHelper::qt_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
428 TextureBinder binder(functions, texture, target, bindingTarget);
429 functions->glTexParameterfv(target, pname, params);
432void QOpenGLTextureHelper::qt_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
434 TextureBinder binder(functions, texture, target, bindingTarget);
435 functions->glGenerateMipmap(target);
438void QOpenGLTextureHelper::qt_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
440 TextureBinder binder(functions, texture, target, bindingTarget);
444void QOpenGLTextureHelper::qt_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
446 TextureBinder binder(functions, texture, target, bindingTarget);
450void QOpenGLTextureHelper::qt_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
452 TextureBinder binder(functions, texture, target, bindingTarget);
456void QOpenGLTextureHelper::qt_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
458 TextureBinder binder(functions, texture, target, bindingTarget);
462void QOpenGLTextureHelper::qt_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
464 TextureBinder binder(functions, texture, target, bindingTarget);
468void 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)
470 TextureBinder binder(functions, texture, target, bindingTarget);
474void 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)
476 TextureBinder binder(functions, texture, target, bindingTarget);
477 functions->glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
480void QOpenGLTextureHelper::qt_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
482 TextureBinder binder(functions, texture, target, bindingTarget);
486void 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)
488 TextureBinder binder(functions, texture, target, bindingTarget);
489 glTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, type
, pixels
);
492void 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)
494 TextureBinder binder(functions, texture, target, bindingTarget);
495 functions->glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
498void QOpenGLTextureHelper::qt_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
500 TextureBinder binder(functions, texture, target, bindingTarget);
504void QOpenGLTextureHelper::qt_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
506 TextureBinder binder(functions, texture, target, bindingTarget);
510void QOpenGLTextureHelper::qt_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
512 TextureBinder binder(functions, texture, target, bindingTarget);
516void QOpenGLTextureHelper::qt_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
518 TextureBinder binder(functions, texture, target, bindingTarget);
522void 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)
524 TextureBinder binder(functions, texture, target, bindingTarget);
528void 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)
530 TextureBinder binder(functions, texture, target, bindingTarget);
531 glCompressedTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, imageSize
, bits
);
534void QOpenGLTextureHelper::qt_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
536 TextureBinder binder(functions, texture, target, bindingTarget);
540void QOpenGLTextureHelper::qt_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
542 TextureBinder binder(functions, texture, target, bindingTarget);
546void 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)
548 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