Use pre-multiplied alpha when clearing windows

Apparently most systems expect this. See https://github.com/glfw/glfw/issues/1538
This commit is contained in:
Kovid Goyal 2019-12-20 08:16:10 +05:30
parent 33c5fc0fb6
commit 2f0b6e24c9
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -477,10 +477,11 @@ set_cell_uniforms(float current_inactive_text_alpha, bool force) {
void
blank_canvas(float background_opacity, color_type color) {
#define C(shift) (((GLfloat)((color >> shift) & 0xFF)) / 255.0f)
glClearColor(C(16), C(8), C(0), background_opacity);
// See https://github.com/glfw/glfw/issues/1538 for why we use pre-multiplied alpha
#define C(shift) ((((GLfloat)((color >> shift) & 0xFF)) / 255.0f) * background_opacity)
glClearColor(C(16), C(8), C(0), background_opacity);
#undef C
glClear(GL_COLOR_BUFFER_BIT);
glClear(GL_COLOR_BUFFER_BIT);
}
bool