6#include <QOpenGLContext>
7#include <private/qopenglextensions_p.h>
13 functions = context->functions();
18 const char *renderer =
reinterpret_cast<
const char *>(context->functions()->glGetString(GL_RENDERER));
20 if (renderer && strstr(renderer,
"AMD Radeon HD"))
23 if (allowDSA && !context->isOpenGLES()
24 && context->hasExtension(QByteArrayLiteral(
"GL_EXT_direct_state_access"))) {
25 TextureParameteriEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint )>(context->getProcAddress(
"glTextureParameteriEXT"));
26 TextureParameterivEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLint *)>(context->getProcAddress(
"glTextureParameterivEXT"));
27 TextureParameterfEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLfloat )>(context->getProcAddress(
"glTextureParameterfEXT"));
28 TextureParameterfvEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum ,
const GLfloat *)>(context->getProcAddress(
"glTextureParameterfvEXT"));
29 GenerateTextureMipmapEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress(
"glGenerateTextureMipmapEXT"));
30 TextureStorage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage3DEXT"));
31 TextureStorage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTextureStorage2DEXT"));
32 TextureStorage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTextureStorage1DEXT"));
33 TextureStorage3DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage3DMultisampleEXT"));
34 TextureStorage2DMultisampleEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureStorage2DMultisampleEXT"));
35 TextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage3DEXT"));
36 TextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage2DEXT"));
37 TextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureImage1DEXT"));
38 TextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage3DEXT"));
39 TextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage2DEXT"));
40 TextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTextureSubImage1DEXT"));
41 CompressedTextureSubImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage1DEXT"));
42 CompressedTextureSubImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage2DEXT"));
43 CompressedTextureSubImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureSubImage3DEXT"));
44 CompressedTextureImage1DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage1DEXT"));
45 CompressedTextureImage2DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage2DEXT"));
46 CompressedTextureImage3DEXT =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTextureImage3DEXT"));
49 TextureParameteri = &QOpenGLTextureHelper::dsa_TextureParameteri;
50 TextureParameteriv = &QOpenGLTextureHelper::dsa_TextureParameteriv;
51 TextureParameterf = &QOpenGLTextureHelper::dsa_TextureParameterf;
52 TextureParameterfv = &QOpenGLTextureHelper::dsa_TextureParameterfv;
53 GenerateTextureMipmap = &QOpenGLTextureHelper::dsa_GenerateTextureMipmap;
54 TextureStorage3D = &QOpenGLTextureHelper::dsa_TextureStorage3D;
55 TextureStorage2D = &QOpenGLTextureHelper::dsa_TextureStorage2D;
56 TextureStorage1D = &QOpenGLTextureHelper::dsa_TextureStorage1D;
57 TextureStorage3DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage3DMultisample;
58 TextureStorage2DMultisample = &QOpenGLTextureHelper::dsa_TextureStorage2DMultisample;
59 TextureImage3D = &QOpenGLTextureHelper::dsa_TextureImage3D;
60 TextureImage2D = &QOpenGLTextureHelper::dsa_TextureImage2D;
61 TextureImage1D = &QOpenGLTextureHelper::dsa_TextureImage1D;
62 TextureSubImage3D = &QOpenGLTextureHelper::dsa_TextureSubImage3D;
63 TextureSubImage2D = &QOpenGLTextureHelper::dsa_TextureSubImage2D;
64 TextureSubImage1D = &QOpenGLTextureHelper::dsa_TextureSubImage1D;
65 CompressedTextureSubImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D;
66 CompressedTextureSubImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage2D;
67 CompressedTextureSubImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureSubImage3D;
68 CompressedTextureImage1D = &QOpenGLTextureHelper::dsa_CompressedTextureImage1D;
69 CompressedTextureImage2D = &QOpenGLTextureHelper::dsa_CompressedTextureImage2D;
70 CompressedTextureImage3D = &QOpenGLTextureHelper::dsa_CompressedTextureImage3D;
73 TextureParameteri = &QOpenGLTextureHelper::qt_TextureParameteri;
74 TextureParameteriv = &QOpenGLTextureHelper::qt_TextureParameteriv;
75 TextureParameterf = &QOpenGLTextureHelper::qt_TextureParameterf;
76 TextureParameterfv = &QOpenGLTextureHelper::qt_TextureParameterfv;
77 GenerateTextureMipmap = &QOpenGLTextureHelper::qt_GenerateTextureMipmap;
78 TextureStorage3D = &QOpenGLTextureHelper::qt_TextureStorage3D;
79 TextureStorage2D = &QOpenGLTextureHelper::qt_TextureStorage2D;
80 TextureStorage1D = &QOpenGLTextureHelper::qt_TextureStorage1D;
81 TextureStorage3DMultisample = &QOpenGLTextureHelper::qt_TextureStorage3DMultisample;
82 TextureStorage2DMultisample = &QOpenGLTextureHelper::qt_TextureStorage2DMultisample;
83 TextureImage3D = &QOpenGLTextureHelper::qt_TextureImage3D;
84 TextureImage2D = &QOpenGLTextureHelper::qt_TextureImage2D;
85 TextureImage1D = &QOpenGLTextureHelper::qt_TextureImage1D;
86 TextureSubImage3D = &QOpenGLTextureHelper::qt_TextureSubImage3D;
87 TextureSubImage2D = &QOpenGLTextureHelper::qt_TextureSubImage2D;
88 TextureSubImage1D = &QOpenGLTextureHelper::qt_TextureSubImage1D;
89 CompressedTextureSubImage1D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage1D;
90 CompressedTextureSubImage2D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage2D;
91 CompressedTextureSubImage3D = &QOpenGLTextureHelper::qt_CompressedTextureSubImage3D;
92 CompressedTextureImage1D = &QOpenGLTextureHelper::qt_CompressedTextureImage1D;
93 CompressedTextureImage2D = &QOpenGLTextureHelper::qt_CompressedTextureImage2D;
94 CompressedTextureImage3D = &QOpenGLTextureHelper::qt_CompressedTextureImage3D;
98 if (!context->isOpenGLES()
99 && context->hasExtension(QByteArrayLiteral(
"GL_NV_texture_multisample"))) {
100 TextureImage3DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage3DMultisampleNV"));
101 TextureImage2DMultisampleNV =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTextureImage2DMultisampleNV"));
103 TextureImage3DMultisample = &QOpenGLTextureHelper::dsa_TextureImage3DMultisample;
104 TextureImage2DMultisample = &QOpenGLTextureHelper::dsa_TextureImage2DMultisample;
106 TextureImage3DMultisample = &QOpenGLTextureHelper::qt_TextureImage3DMultisample;
107 TextureImage2DMultisample = &QOpenGLTextureHelper::qt_TextureImage2DMultisample;
110#if QT_CONFIG(opengles2)
122 GetCompressedTexImage = 0;
123 CompressedTexSubImage1D = 0;
124 CompressedTexSubImage2D = ::glCompressedTexSubImage2D;
125 CompressedTexImage1D = 0;
126 CompressedTexImage2D = ::glCompressedTexImage2D;
127 ActiveTexture = ::glActiveTexture;
130 GenerateMipmap = ::glGenerateMipmap;
133 TexImage3DMultisample = 0;
134 TexImage2DMultisample = 0;
137 QOpenGLContext *ctx = QOpenGLContext::currentContext();
138 if (ctx->format().majorVersion() >= 3) {
140 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
141 TexStorage3D = extra->f.TexStorage3D;
142 TexStorage2D = extra->f.TexStorage2D;
150 TexStorage3DMultisample = 0;
151 TexStorage2DMultisample = 0;
156 if (ctx->format().version() >= std::pair(3, 1)) {
157 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
158 TexStorage2DMultisample = extra->f.TexStorage2DMultisample;
163 if (context->isOpenGLES() && context->hasExtension(QByteArrayLiteral(
"GL_OES_texture_3D"))) {
164 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexImage3DOES"));
165 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexSubImage3DOES"));
166 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexImage3DOES"));
167 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexSubImage3DOES"));
169 QOpenGLContext *ctx = QOpenGLContext::currentContext();
170 if (ctx->isOpenGLES() && ctx->format().majorVersion() >= 3) {
172 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
173 TexImage3D = extra->f.TexImage3D;
174 TexSubImage3D = extra->f.TexSubImage3D;
175 CompressedTexImage3D = extra->f.CompressedTexImage3D;
176 CompressedTexSubImage3D = extra->f.CompressedTexSubImage3D;
179 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage3D"));
180 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage3D"));
183 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage3D"));
184 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage3D"));
188#if !QT_CONFIG(opengles2)
190 TexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage1D"));
191 TexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage1D"));
194 GetCompressedTexImage =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress(
"glGetCompressedTexImage"));
195 CompressedTexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage1D"));
196 CompressedTexSubImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage2D"));
197 CompressedTexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage1D"));
198 CompressedTexImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage2D"));
199 ActiveTexture =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glActiveTexture"));
202 GenerateMipmap =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glGenerateMipmap"));
205 TexImage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage3DMultisample"));
206 TexImage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage2DMultisample"));
209 TexStorage3D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage3D"));
210 TexStorage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage2D"));
211 TexStorage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTexStorage1D"));
214 TexStorage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage3DMultisample"));
215 TexStorage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage2DMultisample"));
216 TexBufferRange =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress(
"glTexBufferRange"));
217 TextureView =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress(
"glTextureView"));
221void QOpenGLTextureHelper::dsa_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
223 Q_UNUSED(bindingTarget);
224 TextureParameteriEXT(texture, target, pname, param);
227void QOpenGLTextureHelper::dsa_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
229 Q_UNUSED(bindingTarget);
230 TextureParameterivEXT(texture, target, pname, params);
233void QOpenGLTextureHelper::dsa_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
235 Q_UNUSED(bindingTarget);
236 TextureParameterfEXT(texture, target, pname, param);
239void QOpenGLTextureHelper::dsa_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
241 Q_UNUSED(bindingTarget);
242 TextureParameterfvEXT(texture, target, pname, params);
245void QOpenGLTextureHelper::dsa_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
247 Q_UNUSED(bindingTarget);
248 GenerateTextureMipmapEXT(texture, target);
251void QOpenGLTextureHelper::dsa_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
253 Q_UNUSED(bindingTarget);
254 TextureStorage3DEXT(texture, target, levels, internalFormat, width, height, depth);
257void QOpenGLTextureHelper::dsa_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
259 Q_UNUSED(bindingTarget);
260 TextureStorage2DEXT(texture, target, levels, internalFormat, width, height);
263void QOpenGLTextureHelper::dsa_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
265 Q_UNUSED(bindingTarget);
266 TextureStorage1DEXT(texture, target, levels, internalFormat, width);
269void QOpenGLTextureHelper::dsa_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
271 Q_UNUSED(bindingTarget);
272 TextureStorage3DMultisampleEXT(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
275void QOpenGLTextureHelper::dsa_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
277 Q_UNUSED(bindingTarget);
278 TextureStorage2DMultisampleEXT(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
281void 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)
283 Q_UNUSED(bindingTarget);
284 TextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, format, type, pixels);
287void 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)
289 Q_UNUSED(bindingTarget);
290 TextureImage2DEXT(texture, target, level, internalFormat, width, height, border, format, type, pixels);
293void QOpenGLTextureHelper::dsa_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
295 Q_UNUSED(bindingTarget);
296 TextureImage1DEXT(texture, target, level, internalFormat, width, border, format, type, pixels);
299void 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)
301 Q_UNUSED(bindingTarget);
302 TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
305void 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)
307 Q_UNUSED(bindingTarget);
308 TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
311void QOpenGLTextureHelper::dsa_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
313 Q_UNUSED(bindingTarget);
314 TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);
317void QOpenGLTextureHelper::dsa_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
319 Q_UNUSED(bindingTarget);
320 TextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
323void QOpenGLTextureHelper::dsa_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
325 Q_UNUSED(bindingTarget);
326 TextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
329void QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
331 Q_UNUSED(bindingTarget);
332 CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);
335void 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)
337 Q_UNUSED(bindingTarget);
338 CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
341void 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)
343 Q_UNUSED(bindingTarget);
344 CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
347void QOpenGLTextureHelper::dsa_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
349 Q_UNUSED(bindingTarget);
350 CompressedTextureImage1DEXT(texture, target, level, internalFormat, width, border, imageSize, bits);
353void QOpenGLTextureHelper::dsa_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
355 Q_UNUSED(bindingTarget);
356 CompressedTextureImage2DEXT(texture, target, level, internalFormat, width, height, border, imageSize, bits);
359void 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)
361 Q_UNUSED(bindingTarget);
362 CompressedTextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, imageSize, bits);
370 TextureBinder(QOpenGLFunctions *functions, GLuint texture, GLenum target, GLenum bindingTarget)
371 : m_functions(functions)
392 m_functions->glGetIntegerv(bindingTarget, &m_oldTexture);
393 m_functions->glBindTexture(m_target, texture);
398 m_functions->glBindTexture(m_target, m_oldTexture);
402 QOpenGLFunctions *m_functions;
409void QOpenGLTextureHelper::qt_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
411 TextureBinder binder(functions, texture, target, bindingTarget);
412 functions->glTexParameteri(target, pname, param);
415void QOpenGLTextureHelper::qt_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
417 TextureBinder binder(functions, texture, target, bindingTarget);
418 functions->glTexParameteriv(target, pname, params);
421void QOpenGLTextureHelper::qt_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
423 TextureBinder binder(functions, texture, target, bindingTarget);
424 functions->glTexParameterf(target, pname, param);
427void QOpenGLTextureHelper::qt_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
429 TextureBinder binder(functions, texture, target, bindingTarget);
430 functions->glTexParameterfv(target, pname, params);
433void QOpenGLTextureHelper::qt_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
435 TextureBinder binder(functions, texture, target, bindingTarget);
436 functions->glGenerateMipmap(target);
439void QOpenGLTextureHelper::qt_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
441 TextureBinder binder(functions, texture, target, bindingTarget);
445void QOpenGLTextureHelper::qt_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
447 TextureBinder binder(functions, texture, target, bindingTarget);
451void QOpenGLTextureHelper::qt_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
453 TextureBinder binder(functions, texture, target, bindingTarget);
457void QOpenGLTextureHelper::qt_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
459 TextureBinder binder(functions, texture, target, bindingTarget);
463void QOpenGLTextureHelper::qt_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
465 TextureBinder binder(functions, texture, target, bindingTarget);
469void 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)
471 TextureBinder binder(functions, texture, target, bindingTarget);
475void 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)
477 TextureBinder binder(functions, texture, target, bindingTarget);
478 functions->glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
481void QOpenGLTextureHelper::qt_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
483 TextureBinder binder(functions, texture, target, bindingTarget);
487void 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)
489 TextureBinder binder(functions, texture, target, bindingTarget);
490 glTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, type
, pixels
);
493void 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)
495 TextureBinder binder(functions, texture, target, bindingTarget);
496 functions->glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
499void QOpenGLTextureHelper::qt_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
501 TextureBinder binder(functions, texture, target, bindingTarget);
505void QOpenGLTextureHelper::qt_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
507 TextureBinder binder(functions, texture, target, bindingTarget);
511void QOpenGLTextureHelper::qt_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
513 TextureBinder binder(functions, texture, target, bindingTarget);
517void QOpenGLTextureHelper::qt_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
519 TextureBinder binder(functions, texture, target, bindingTarget);
523void 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)
525 TextureBinder binder(functions, texture, target, bindingTarget);
529void 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)
531 TextureBinder binder(functions, texture, target, bindingTarget);
532 glCompressedTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, imageSize
, bits
);
535void QOpenGLTextureHelper::qt_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
537 TextureBinder binder(functions, texture, target, bindingTarget);
541void QOpenGLTextureHelper::qt_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
543 TextureBinder binder(functions, texture, target, bindingTarget);
547void 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)
549 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