mirror of https://github.com/qt/qtbase.git
Refix invalid glTexImage2D operation in FramebufferObject
A recent change fixed the texture format parameter to be RGB instead of RGBA for opaque internal formats. However, this broke the RGB10 case, since the pixel type is then GL_UNSIGNED_INT_2_10_10_10_REV. The doc says: "GL_INVALID_OPERATION is generated if type is [...] GL_UNSIGNED_INT_2_10_10_10_REV [...] and format is neither GL_RGBA nor GL_BGRA." https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml This modifiesba9e57d65f
. Pick-to: 6.5 Change-Id: I9a004331513179a3f840a007af0418d14e7f5dff Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commitb0056f052d
) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit6ae9a8441e
)
This commit is contained in:
parent
9125f37017
commit
4b77494bfb
|
@ -553,12 +553,14 @@ void QOpenGLFramebufferObjectPrivate::initTexture(int idx)
|
|||
bool isOpaque = false;
|
||||
switch (color.internalFormat) {
|
||||
case GL_RGB8:
|
||||
case GL_RGB10:
|
||||
case GL_RGB16:
|
||||
case GL_RGB16F:
|
||||
case GL_RGB32F:
|
||||
isOpaque = true;
|
||||
break;
|
||||
case GL_RGB10:
|
||||
// opaque but the pixel type (INT_2_10_10_10) has alpha and so requires RGBA texture format
|
||||
break;
|
||||
}
|
||||
const GLuint textureFormat = isOpaque ? GL_RGB : GL_RGBA;
|
||||
|
||||
|
|
Loading…
Reference in New Issue