Use GL_BGRA_EXT format with ANGLE.

This commit is contained in:
John Preston 2021-07-14 20:03:22 +03:00
parent 9c552215ab
commit ed6c2cb541
4 changed files with 15 additions and 5 deletions

View file

@ -91,11 +91,11 @@ void Image::bind(QOpenGLFunctions &f) {
f.glTexImage2D(
GL_TEXTURE_2D,
0,
GL_RGBA,
kFormatRGBA,
_subimage.width(),
_subimage.height(),
0,
GL_RGBA,
kFormatRGBA,
GL_UNSIGNED_BYTE,
_image.constBits());
} else {
@ -106,7 +106,7 @@ void Image::bind(QOpenGLFunctions &f) {
0,
_subimage.width(),
_subimage.height(),
GL_RGBA,
kFormatRGBA,
GL_UNSIGNED_BYTE,
_image.constBits());
}

View file

@ -136,4 +136,12 @@ private:
[[nodiscard]] GLint CurrentSingleComponentFormat();
#ifdef Q_OS_WIN
inline constexpr auto kFormatRGBA = GL_BGRA_EXT;
inline constexpr auto kSwizzleRedBlue = false;
#else // Q_OS_WIN
inline constexpr auto kFormatRGBA = GL_RGBA;
inline constexpr auto kSwizzleRedBlue = true;
#endif // Q_OS_WIN
} // namespace Ui::GL

View file

@ -25,7 +25,6 @@ void FillTriangles(
const QColor &color,
Fn<void()> additional = nullptr);
void FillRectangle(
QOpenGLFunctions &f,
not_null<QOpenGLShaderProgram*> program,

View file

@ -6,6 +6,7 @@
//
#include "ui/gl/gl_shader.h"
#include "ui/gl/gl_image.h"
#include "base/debug_log.h"
#include <QtGui/QOpenGLContext>
@ -72,8 +73,10 @@ uniform sampler2D s_texture;
)",
.body = R"(
result = texture2D(s_texture, v_texcoord);
)" + (kSwizzleRedBlue
? R"(
result = vec4(result.b, result.g, result.r, result.a);
)",
)" : QString()),
};
}