diff options
Diffstat (limited to 'render/gles2/shaders.c')
-rw-r--r-- | render/gles2/shaders.c | 32 |
1 files changed, 30 insertions, 2 deletions
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;" "}"; |