gl_position probably should not be public (i.e., it should probably be _gl_position).