Kuck dir mal deine Vertexkoordinaten genauer an.
Du zeichnest kein Quad, sondern eine Linie.
Weiters musst du beim Zeichnen, sofern Culling aktiv ist (Backface-Culling in deinem Fall) im richtigen Uhrzeigersinn zeichnen!
Ach was mir gerade beim Schreiben auffällt:
glOrtho(0,640,0,480,0,128);
Du willst also in 2D zeichnen, warum verwendest du dann glVertex3f?
Edit: @Vorgänger
OpenGL ist
imho eine riesen Statemachine, dh. wenn er ihr mitteilt, dass die Texture mit der ID "BeanTex" (Zahl) ab "jetzt" verwendet werden soll, so macht es nichts aus, wo er die Variable hat, sofern er sie nie wieder gebraucht. Schlechter Programmierstil - die Texturen müssen wieder freigegeben werden, daher in eine globale Variable speichern und per entsprechendem
OpenGL Befehl freigeben!
(Was ich damit sagen wollte, ist, dass es nicht daran liegt)