* uses vertex array objects