title: How to convert world coordinates to screen coordinates in OpenGL ES 2.0
body: <p>I am using following OpenGL ES 1.x code to set my projection coordinates. </p>
  
  <pre><code>glMatrixMode(GL_PROJECTION); 
  
  float width = 320;
  float height = 480;
  
  glOrthof(0.0,                  // Left
           1.0,                  // Right
           height / width,       // Bottom
           0.0,                  // Top
           -1.0,                 // Near
           1.0);                 // Far
  glMatrixMode(GL_MODELVIEW);
  </code></pre>
  
  <p>What is the equivalent method to setup this in OpenGL ES 2.0 ? 
  What projection matrix should I pass to the vertex shader ?</p>
  
  <p>I have tried following function to create the matrix but its not working:</p>
  
  <pre><code>void SetOrtho (Matrix4x4&amp; m, float left, float right, float bottom, float top, float near, 
  float far)
  {
      const float tx = - (right + left)/(right - left);
      const float ty = - (top + bottom)/(top - bottom);
      const float tz = - (far + near)/(far - near);
  
      m.m[0] = 2.0f/(right-left);
      m.m[1] = 0;
      m.m[2] = 0;
      m.m[3] = tx;
  
      m.m[4] = 0;
      m.m[5] = 2.0f/(top-bottom);
      m.m[6] = 0;
      m.m[7] = ty;
  
      m.m[8] = 0;
      m.m[9] = 0;
      m.m[10] = -2.0/(far-near);
      m.m[11] = tz;
  
      m.m[12] = 0;
      m.m[13] = 0;
      m.m[14] = 0;
      m.m[15] = 1;
  }
  </code></pre>
  
  <p>Vertex Shader :</p>
  
  <pre><code>uniform mat4 u_mvpMatrix;
  
  attribute vec4 a_position;
  attribute vec4 a_color;
  
  varying vec4 v_color;
  
  void main()
  {
     gl_Position = u_mvpMatrix * a_position;
     v_color = a_color;
  }
  </code></pre>
  
  <p>Client Code (parameters to the vertex shader):</p>
  
  <pre><code>float min = 0.0f;
  float max = 1.0f;
  const GLfloat squareVertices[] = {
      min, min,
      min, max,
      max, min,
      max, max
  };
  const GLfloat squareColors[] = {
      1, 1, 0, 1,
      0, 1, 1, 1,
      0, 0, 0, 1,
      1, 0, 1, 1,
  };
  Matrix4x4 proj;
  SetOrtho(proj, 0.0f, 1.0f, 480.0/320.0, 0.0f, -1.0f, 1.0f );
  </code></pre>
  
  <p>The output i am getting in the iPhone simulator:</p>
  
  <p><img src="https://i.stack.imgur.com/6YRlI.png" alt="enter image description here"></p>