diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-07-18 14:48:05 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-07-27 12:13:27 +0000 |
commit | e65371caf9d067a28566bfcf361ead445194b955 (patch) | |
tree | f40d493e4f816097065149eea0b1e9b7640a7cf4 /src/gui/opengl | |
parent | ede3791df8330ed8daae6667d025ad40219a9f5f (diff) |
Fixup GL_RGB10 FBO on OpenGL/ES3
Turns out on OpenGL ES, only the GL_RGB10_A2 form is allowed as a
render buffer storage format.
Change-Id: I42915b61835167ae457aae91da7e75065dd3eb21
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/gui/opengl')
-rw-r--r-- | src/gui/opengl/qopenglframebufferobject.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp index 91c25184b6..21ed029dfc 100644 --- a/src/gui/opengl/qopenglframebufferobject.cpp +++ b/src/gui/opengl/qopenglframebufferobject.cpp @@ -559,11 +559,16 @@ void QOpenGLFramebufferObjectPrivate::initColorBuffer(int idx, GLint *samples) GLenum storageFormat = color.internalFormat; // ES requires a sized format. The older desktop extension does not. Correct the format on ES. - if (ctx->isOpenGLES() && color.internalFormat == GL_RGBA) { - if (funcs.hasOpenGLExtension(QOpenGLExtensions::Sized8Formats)) - storageFormat = GL_RGBA8; - else - storageFormat = GL_RGBA4; + if (ctx->isOpenGLES()) { + if (color.internalFormat == GL_RGBA) { + if (funcs.hasOpenGLExtension(QOpenGLExtensions::Sized8Formats)) + storageFormat = GL_RGBA8; + else + storageFormat = GL_RGBA4; + } else if (color.internalFormat == GL_RGB10) { + // GL_RGB10 is not allowed in ES for glRenderbufferStorage. + storageFormat = GL_RGB10_A2; + } } funcs.glGenRenderbuffers(1, &color_buffer); |