Mercurial > mplayer.hg
changeset 36124:87653d6a0f47
Avoid PushMatrix/PopMatrix.
This makes it easier to support e.g. GLES2.
author | reimar |
---|---|
date | Sat, 04 May 2013 11:13:58 +0000 |
parents | 99c8f7888cbe |
children | c4075d9e329d |
files | libvo/vo_gl.c |
diffstat | 1 files changed, 14 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_gl.c Sat May 04 10:30:07 2013 +0000 +++ b/libvo/vo_gl.c Sat May 04 11:13:58 2013 +0000 @@ -175,14 +175,16 @@ static void redraw(void); +static float video_matrix[16]; + static void resize(int x,int y){ // simple orthogonal projection for 0-image_width;0-image_height - float matrix[16] = { - 2.0/image_width, 0, 0, 0, - 0, -2.0/image_height, 0, 0, - 0, 0, 0, 0, - -1, 1, 0, 1 - }; + memset(video_matrix, 0, sizeof(video_matrix)); + video_matrix[0] = 2.0/image_width; + video_matrix[5] = -2.0/image_height; + video_matrix[12] = -1; + video_matrix[13] = 1; + video_matrix[15] = 1; mp_msg(MSGT_VO, MSGL_V, "[gl] Resize: %dx%d\n",x,y); if (WinID >= 0) { int left = 0, top = 0, w = x, h = y; @@ -203,14 +205,14 @@ new_h += vo_panscan_y; scale_x = (double)new_w / (double)x; scale_y = (double)new_h / (double)y; - matrix[0] *= scale_x; - matrix[12] *= scale_x; - matrix[5] *= scale_y; - matrix[13] *= scale_y; + video_matrix[0] *= scale_x; + video_matrix[12] *= scale_x; + video_matrix[5] *= scale_y; + video_matrix[13] *= scale_y; ass_border_x = (vo_dwidth - new_w) / 2; ass_border_y = (vo_dheight - new_h) / 2; } - mpglLoadMatrixf(matrix); + mpglLoadMatrixf(video_matrix); mpglMatrixMode(GL_MODELVIEW); mpglLoadIdentity(); @@ -842,7 +844,6 @@ -1, 1, 0, 1 }; mpglMatrixMode(GL_PROJECTION); - mpglPushMatrix(); mpglLoadMatrixf(matrix); } mpglEnable(GL_BLEND); @@ -879,7 +880,7 @@ // set rendering parameters back to defaults mpglDisable(GL_BLEND); if (!scaled_osd) - mpglPopMatrix(); + mpglLoadMatrixf(video_matrix); mpglBindTexture(gl_target, 0); }