6#include <QOpenGLContext>
7#include <private/qopenglextensions_p.h>
18 const char *
renderer =
reinterpret_cast<const char *
>(
context->functions()->glGetString(GL_RENDERER));
23 if (allowDSA && !
context->isOpenGLES()
35 TextureImage3DEXT =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLuint ,
GLenum ,
GLint ,
GLenum ,
GLsizei ,
GLsizei ,
GLsizei ,
GLint ,
GLenum ,
GLenum ,
const GLvoid *)
>(
context->getProcAddress(
"glTextureImage3DEXT"));
38 TextureSubImage3DEXT =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLuint ,
GLenum ,
GLint ,
GLint ,
GLint ,
GLint ,
GLsizei ,
GLsizei ,
GLsizei ,
GLenum ,
GLenum ,
const GLvoid *)
>(
context->getProcAddress(
"glTextureSubImage3DEXT"));
43 CompressedTextureSubImage3DEXT =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLuint ,
GLenum ,
GLint ,
GLint ,
GLint ,
GLint ,
GLsizei ,
GLsizei ,
GLsizei ,
GLenum ,
GLsizei ,
const GLvoid *)
>(
context->getProcAddress(
"glCompressedTextureSubImage3DEXT"));
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;
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;
125 CompressedTexImage1D = 0;
133 TexImage3DMultisample = 0;
134 TexImage2DMultisample = 0;
138 if (
ctx->format().majorVersion() >= 3) {
141 TexStorage3D = extra->f.TexStorage3D;
142 TexStorage2D = extra->f.TexStorage2D;
150 TexStorage3DMultisample = 0;
151 TexStorage2DMultisample = 0;
158 TexStorage2DMultisample = extra->f.TexStorage2DMultisample;
165 TexSubImage3D =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLenum,
GLint,
GLint,
GLint,
GLint,
GLsizei,
GLsizei,
GLsizei,
GLenum,
GLenum,
const GLvoid*)
>(
context->getProcAddress(
"glTexSubImage3DOES"));
167 CompressedTexSubImage3D =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLenum,
GLint,
GLint,
GLint,
GLint,
GLsizei,
GLsizei,
GLsizei,
GLenum,
GLsizei,
const GLvoid*)
>(
context->getProcAddress(
"glCompressedTexSubImage3DOES"));
170 if (
ctx->isOpenGLES() &&
ctx->format().majorVersion() >= 3) {
173 TexImage3D = extra->f.TexImage3D;
174 TexSubImage3D = extra->f.TexSubImage3D;
175 CompressedTexImage3D = extra->f.CompressedTexImage3D;
176 CompressedTexSubImage3D = extra->f.CompressedTexSubImage3D;
180 TexSubImage3D =
reinterpret_cast<void (
QOPENGLF_APIENTRYP)(
GLenum ,
GLint ,
GLint ,
GLint ,
GLint ,
GLsizei ,
GLsizei ,
GLsizei ,
GLenum ,
GLenum ,
const GLvoid *)
>(
context->getProcAddress(
"glTexSubImage3D"));
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)
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)
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)
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)
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)
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)
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)
344 CompressedTextureSubImage3DEXT(
texture,
target,
level,
xoffset,
yoffset,
zoffset,
width,
height,
depth,
format,
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)
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);
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)
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)
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)
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)
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)
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)
532 glCompressedTexSubImage3D(
target,
level,
xoffset,
yoffset,
zoffset,
width,
height,
depth,
format,
imageSize,
bits);
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)
static QOpenGLContext * currentContext()
Returns the last context which called makeCurrent in the current thread, or \nullptr,...
The QOpenGLFunctions class provides cross-platform access to the OpenGL ES 2.0 API.
void glTexParameteriv(GLenum target, GLenum pname, const GLint *params)
Convenience function that calls glTexParameteriv(target, pname, params).
void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
Convenience function that calls glTexImage2D(target, level, internalformat, width,...
void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
Convenience function that calls glTexSubImage2D(target, level, xoffset, yoffset, width,...
void glTexParameteri(GLenum target, GLenum pname, GLint param)
Convenience function that calls glTexParameteri(target, pname, param).
void glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
Convenience function that calls glTexParameterfv(target, pname, params).
void glTexParameterf(GLenum target, GLenum pname, GLfloat param)
Convenience function that calls glTexParameterf(target, pname, param).
void glGenerateMipmap(GLenum target)
Convenience function that calls glGenerateMipmap(target).
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)
QOpenGLFunctions * functions
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 glActiveTexture(GLenum texture)
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 glGenerateMipmap(GLenum target)
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)
QOpenGLTextureHelper(QOpenGLContext *context)
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 QByteArrayLiteral(str)
#define QOPENGLF_APIENTRYP
typedef GLint(GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC)(GLuint program
GLint GLenum GLsizei GLsizei GLsizei depth
typedef GLfloat(GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC)(GLuint path
GLenum GLuint GLint level
GLint GLsizei GLsizei height
GLsizei GLenum GLsizei GLsizei GLboolean fixedSampleLocations
GLint GLenum GLsizei GLsizei GLsizei GLint border
GLint GLint GLint yoffset
GLint GLint GLint GLint zoffset
typedef GLsizei(GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC)(GLuint target)
typedef GLenum(GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC)(void)
typedef GLboolean(GL_APIENTRYP PFNGLISENABLEDIOESPROC)(GLenum target
GLenum const GLint * param
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum const void * pixels
GLint GLsizei GLsizei GLenum format
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei imageSize
GLsizei GLenum internalFormat
#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
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
#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
constexpr decltype(auto) qMakePair(T1 &&value1, T2 &&value2) noexcept(noexcept(std::make_pair(std::forward< T1 >(value1), std::forward< T2 >(value2))))
QSvgRenderer * renderer
[0]