aboutsummaryrefslogtreecommitdiff
path: root/render/gles2
diff options
context:
space:
mode:
Diffstat (limited to 'render/gles2')
-rw-r--r--render/gles2/renderer.c2
-rw-r--r--render/gles2/shaders.c32
2 files changed, 31 insertions, 3 deletions
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index 07647f2f..623f378e 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -142,7 +142,7 @@ static bool wlr_gles2_render_surface(struct wlr_renderer_state *state,
}
gles2_flush_errors();
wlr_surface_bind(surface);
- GL_CALL(glUniformMatrix4fv(0, 1, GL_TRUE, *matrix));
+ GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
draw_quad();
return true;
}
diff --git a/render/gles2/shaders.c b/render/gles2/shaders.c
index 850c0618..62712230 100644
--- a/render/gles2/shaders.c
+++ b/render/gles2/shaders.c
@@ -9,8 +9,22 @@ const GLchar quad_vertex_src[] =
"attribute vec2 texcoord;"
"varying vec4 v_color;"
"varying vec2 v_texcoord;"
+"mat4 transpose(in mat4 inMatrix) {"
+" vec4 i0 = inMatrix[0];"
+" vec4 i1 = inMatrix[1];"
+" vec4 i2 = inMatrix[2];"
+" vec4 i3 = inMatrix[3];"
+" mat4 outMatrix = mat4("
+" vec4(i0.x, i1.x, i2.x, i3.x),"
+" vec4(i0.y, i1.y, i2.y, i3.y),"
+" vec4(i0.z, i1.z, i2.z, i3.z),"
+" vec4(i0.w, i1.w, i2.w, i3.w)"
+" );"
+""
+" return outMatrix;"
+"}"
"void main() {"
-" gl_Position = proj * vec4(pos, 0.0, 1.0);"
+" gl_Position = transpose(proj) * vec4(pos, 0.0, 1.0);"
" v_color = color;"
" v_texcoord = texcoord;"
"}";
@@ -41,8 +55,22 @@ const GLchar vertex_src[] =
"attribute vec2 pos;"
"attribute vec2 texcoord;"
"varying vec2 v_texcoord;"
+"mat4 transpose(in mat4 inMatrix) {"
+" vec4 i0 = inMatrix[0];"
+" vec4 i1 = inMatrix[1];"
+" vec4 i2 = inMatrix[2];"
+" vec4 i3 = inMatrix[3];"
+" mat4 outMatrix = mat4("
+" vec4(i0.x, i1.x, i2.x, i3.x),"
+" vec4(i0.y, i1.y, i2.y, i3.y),"
+" vec4(i0.z, i1.z, i2.z, i3.z),"
+" vec4(i0.w, i1.w, i2.w, i3.w)"
+" );"
+""
+" return outMatrix;"
+"}"
"void main() {"
-" gl_Position = proj * vec4(pos, 0.0, 1.0);"
+" gl_Position = transpose(proj) * vec4(pos, 0.0, 1.0);"
" v_texcoord = texcoord;"
"}";