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)
123 GetCompressedTexImage = 0;
124 CompressedTexSubImage1D = 0;
125 CompressedTexSubImage2D = ::glCompressedTexSubImage2D;
126 CompressedTexImage1D = 0;
127 CompressedTexImage2D = ::glCompressedTexImage2D;
128 ActiveTexture = ::glActiveTexture;
131 GenerateMipmap = ::glGenerateMipmap;
134 TexImage3DMultisample = 0;
135 TexImage2DMultisample = 0;
138 QOpenGLContext *ctx = QOpenGLContext::currentContext();
139 if (ctx->format().majorVersion() >= 3) {
141 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
142 TexStorage3D = extra->f.TexStorage3D;
143 TexStorage2D = extra->f.TexStorage2D;
151 TexStorage3DMultisample = 0;
152 TexStorage2DMultisample = 0;
157 if (ctx->format().version() >= std::pair(3, 1)) {
158 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
159 TexStorage2DMultisample = extra->f.TexStorage2DMultisample;
164 if (context->isOpenGLES() && context->hasExtension(QByteArrayLiteral(
"GL_OES_texture_3D"))) {
165 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexImage3DOES"));
166 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum,
const GLvoid*)>(context->getProcAddress(
"glTexSubImage3DOES"));
167 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexImage3DOES"));
168 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei,
const GLvoid*)>(context->getProcAddress(
"glCompressedTexSubImage3DOES"));
170 QOpenGLContext *ctx = QOpenGLContext::currentContext();
171 if (ctx->isOpenGLES() && ctx->format().majorVersion() >= 3) {
173 QOpenGLExtraFunctionsPrivate *extra =
static_cast<QOpenGLExtensions *>(context->extraFunctions())->d();
174 TexImage3D = extra->f.TexImage3D;
175 TexSubImage3D = extra->f.TexSubImage3D;
176 CompressedTexImage3D = extra->f.CompressedTexImage3D;
177 CompressedTexSubImage3D = extra->f.CompressedTexSubImage3D;
180 TexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage3D"));
181 TexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage3D"));
184 CompressedTexImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage3D"));
185 CompressedTexSubImage3D =
reinterpret_cast<
void (
QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage3D"));
189#if !QT_CONFIG(opengles2)
191 TexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexImage1D"));
192 TexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum ,
const GLvoid *)>(context->getProcAddress(
"glTexSubImage1D"));
195 GetCompressedTexImage =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress(
"glGetCompressedTexImage"));
196 CompressedTexSubImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage1D"));
197 CompressedTexSubImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexSubImage2D"));
198 CompressedTexImage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage1D"));
199 CompressedTexImage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei ,
const GLvoid *)>(context->getProcAddress(
"glCompressedTexImage2D"));
200 ActiveTexture =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glActiveTexture"));
203 GenerateMipmap =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress(
"glGenerateMipmap"));
206 TexImage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage3DMultisample"));
207 TexImage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexImage2DMultisample"));
210 TexStorage3D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage3D"));
211 TexStorage2D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress(
"glTexStorage2D"));
212 TexStorage1D =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress(
"glTexStorage1D"));
215 TexStorage3DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage3DMultisample"));
216 TexStorage2DMultisample =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress(
"glTexStorage2DMultisample"));
217 TexBufferRange =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress(
"glTexBufferRange"));
218 TextureView =
reinterpret_cast<
void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress(
"glTextureView"));
222void QOpenGLTextureHelper::dsa_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
224 Q_UNUSED(bindingTarget);
225 TextureParameteriEXT(texture, target, pname, param);
228void QOpenGLTextureHelper::dsa_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
230 Q_UNUSED(bindingTarget);
231 TextureParameterivEXT(texture, target, pname, params);
234void QOpenGLTextureHelper::dsa_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
236 Q_UNUSED(bindingTarget);
237 TextureParameterfEXT(texture, target, pname, param);
240void QOpenGLTextureHelper::dsa_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
242 Q_UNUSED(bindingTarget);
243 TextureParameterfvEXT(texture, target, pname, params);
246void QOpenGLTextureHelper::dsa_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
248 Q_UNUSED(bindingTarget);
249 GenerateTextureMipmapEXT(texture, target);
252void QOpenGLTextureHelper::dsa_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
254 Q_UNUSED(bindingTarget);
255 TextureStorage3DEXT(texture, target, levels, internalFormat, width, height, depth);
258void QOpenGLTextureHelper::dsa_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
260 Q_UNUSED(bindingTarget);
261 TextureStorage2DEXT(texture, target, levels, internalFormat, width, height);
264void QOpenGLTextureHelper::dsa_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
266 Q_UNUSED(bindingTarget);
267 TextureStorage1DEXT(texture, target, levels, internalFormat, width);
270void QOpenGLTextureHelper::dsa_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
272 Q_UNUSED(bindingTarget);
273 TextureStorage3DMultisampleEXT(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
276void QOpenGLTextureHelper::dsa_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
278 Q_UNUSED(bindingTarget);
279 TextureStorage2DMultisampleEXT(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
282void 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)
284 Q_UNUSED(bindingTarget);
285 TextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, format, type, pixels);
288void 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)
290 Q_UNUSED(bindingTarget);
291 TextureImage2DEXT(texture, target, level, internalFormat, width, height, border, format, type, pixels);
294void QOpenGLTextureHelper::dsa_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
296 Q_UNUSED(bindingTarget);
297 TextureImage1DEXT(texture, target, level, internalFormat, width, border, format, type, pixels);
300void 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)
302 Q_UNUSED(bindingTarget);
303 TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
306void 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)
308 Q_UNUSED(bindingTarget);
309 TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
312void QOpenGLTextureHelper::dsa_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
314 Q_UNUSED(bindingTarget);
315 TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);
318void QOpenGLTextureHelper::dsa_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
320 Q_UNUSED(bindingTarget);
321 TextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);
324void QOpenGLTextureHelper::dsa_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
326 Q_UNUSED(bindingTarget);
327 TextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations);
330void QOpenGLTextureHelper::dsa_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
332 Q_UNUSED(bindingTarget);
333 CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);
336void 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)
338 Q_UNUSED(bindingTarget);
339 CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
342void 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)
344 Q_UNUSED(bindingTarget);
345 CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
348void QOpenGLTextureHelper::dsa_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
350 Q_UNUSED(bindingTarget);
351 CompressedTextureImage1DEXT(texture, target, level, internalFormat, width, border, imageSize, bits);
354void QOpenGLTextureHelper::dsa_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
356 Q_UNUSED(bindingTarget);
357 CompressedTextureImage2DEXT(texture, target, level, internalFormat, width, height, border, imageSize, bits);
360void 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)
362 Q_UNUSED(bindingTarget);
363 CompressedTextureImage3DEXT(texture, target, level, internalFormat, width, height, depth, border, imageSize, bits);
371 TextureBinder(QOpenGLFunctions *functions, GLuint texture, GLenum target, GLenum bindingTarget)
372 : m_functions(functions)
393 m_functions->glGetIntegerv(bindingTarget, &m_oldTexture);
394 m_functions->glBindTexture(m_target, texture);
399 m_functions->glBindTexture(m_target, m_oldTexture);
403 QOpenGLFunctions *m_functions;
410void QOpenGLTextureHelper::qt_TextureParameteri(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLint param)
412 TextureBinder binder(functions, texture, target, bindingTarget);
413 functions->glTexParameteri(target, pname, param);
416void QOpenGLTextureHelper::qt_TextureParameteriv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLint *params)
418 TextureBinder binder(functions, texture, target, bindingTarget);
419 functions->glTexParameteriv(target, pname, params);
422void QOpenGLTextureHelper::qt_TextureParameterf(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname, GLfloat param)
424 TextureBinder binder(functions, texture, target, bindingTarget);
425 functions->glTexParameterf(target, pname, param);
428void QOpenGLTextureHelper::qt_TextureParameterfv(GLuint texture, GLenum target, GLenum bindingTarget, GLenum pname,
const GLfloat *params)
430 TextureBinder binder(functions, texture, target, bindingTarget);
431 functions->glTexParameterfv(target, pname, params);
434void QOpenGLTextureHelper::qt_GenerateTextureMipmap(GLuint texture, GLenum target, GLenum bindingTarget)
436 TextureBinder binder(functions, texture, target, bindingTarget);
437 functions->glGenerateMipmap(target);
440void QOpenGLTextureHelper::qt_TextureStorage3D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
442 TextureBinder binder(functions, texture, target, bindingTarget);
446void QOpenGLTextureHelper::qt_TextureStorage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
448 TextureBinder binder(functions, texture, target, bindingTarget);
452void QOpenGLTextureHelper::qt_TextureStorage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei levels, GLenum internalFormat, GLsizei width)
454 TextureBinder binder(functions, texture, target, bindingTarget);
458void QOpenGLTextureHelper::qt_TextureStorage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
460 TextureBinder binder(functions, texture, target, bindingTarget);
464void QOpenGLTextureHelper::qt_TextureStorage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
466 TextureBinder binder(functions, texture, target, bindingTarget);
470void 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)
472 TextureBinder binder(functions, texture, target, bindingTarget);
476void 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)
478 TextureBinder binder(functions, texture, target, bindingTarget);
479 functions->glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
482void QOpenGLTextureHelper::qt_TextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLenum format, GLenum type,
const GLvoid *pixels)
484 TextureBinder binder(functions, texture, target, bindingTarget);
488void 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)
490 TextureBinder binder(functions, texture, target, bindingTarget);
491 glTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, type
, pixels
);
494void 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)
496 TextureBinder binder(functions, texture, target, bindingTarget);
497 functions->glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
500void QOpenGLTextureHelper::qt_TextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type,
const GLvoid *pixels)
502 TextureBinder binder(functions, texture, target, bindingTarget);
506void QOpenGLTextureHelper::qt_TextureImage3DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations)
508 TextureBinder binder(functions, texture, target, bindingTarget);
512void QOpenGLTextureHelper::qt_TextureImage2DMultisample(GLuint texture, GLenum target, GLenum bindingTarget, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations)
514 TextureBinder binder(functions, texture, target, bindingTarget);
518void QOpenGLTextureHelper::qt_CompressedTextureSubImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize,
const GLvoid *bits)
520 TextureBinder binder(functions, texture, target, bindingTarget);
524void 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)
526 TextureBinder binder(functions, texture, target, bindingTarget);
530void 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)
532 TextureBinder binder(functions, texture, target, bindingTarget);
533 glCompressedTexSubImage3D(target
, level
, xoffset
, yoffset
, zoffset
, width
, height
, depth
, format
, imageSize
, bits
);
536void QOpenGLTextureHelper::qt_CompressedTextureImage1D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLint border, GLsizei imageSize,
const GLvoid *bits)
538 TextureBinder binder(functions, texture, target, bindingTarget);
542void QOpenGLTextureHelper::qt_CompressedTextureImage2D(GLuint texture, GLenum target, GLenum bindingTarget, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize,
const GLvoid *bits)
544 TextureBinder binder(functions, texture, target, bindingTarget);
548void 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)
550 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