   I don't understand rotation.
  I have a quad with a texture on it, representing a ship. I can rotate the camera to make the ship rotate, but it always rotates around 0,0. Am I supposed to rotate each vertex around the ship's position? What is the correct way to do this?   
  Maybe a chapter from the red book can help you.   ;  What exactly are you trying to do?Remember that order matters when calling glRotate and glTranslate, since matrix multiplication is not commutative (I*A*B does usually not yield the same result as I*B*A).For example, provided that the current matrix is GL_MODELVIEWglRotatef(90,0,1,0);glTranslate(5,5,5);will first rotate the ship 90 degrees around <0,0,0> using the y-axis <0,1,0> and then move it to location <5,5,5>, whileglTranslate(5,5,5);glRotatef(90,0,1,0);will first move the object to location <5,5,5> and then rotate it around <0,0,0>. More specifically, by using the first order the ship will end up at location <5,5,5> while it will end up at location <5,5,-5> using the second one.   