<div dir="ltr"><div class="gmail_extra">Thanks for posting those LookAt and Perspective routines. They're kind of needed with OpenGL ES 2.0, as it no longer has matrix modes. You need to build your own perspective and model view matrices and pass them to your vertex shaders as uniforms.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">uniform mat4 modelview; // modelview matrix uniform</div><div class="gmail_extra">uniform mat4 projection; // projection matrix uniform</div><div class="gmail_extra"><br></div><div class="gmail_extra">attribute vec3 xyz; // vertex position attribute </div><div class="gmail_extra">attribute vec2 uv; // uv texture coordinate attribute</div><div class="gmail_extra"> </div><div class="gmail_extra">varying vec2 texcoord; // varying texture coordinate</div><div class="gmail_extra"> </div><div class="gmail_extra">void main()</div><div class="gmail_extra">{</div><div class="gmail_extra">    vec4 vertex = modelview * vec4(xyz, 1.0); // transform vertex with modelview matrix uniform</div><div class="gmail_extra">    gl_Position = projection * vertex; // project the transformed vertex and write it to gl_Position</div><div class="gmail_extra">    texcoord = uv; // assign the uv texture coordinate to the varying</div><div class="gmail_extra">}</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">By the way, what's stopping you guys from using OpenGL ES 2.0? It works on most all Windows, Mac, and Linux systems, and it's the only 3D graphics API on Raspberry Pi and most smart phones/tablets.</div></div>