No. the display function happens under a fraction of a second and only sends one image to the screen. What’s probably happening is your rendering every frame over the top of each other and you’re only getting the last one.
You need to have a separate thread to keep the display function being called at a constant rate or have whatever windowing system you’re using like GLUT to run the display function during idle time.
Then in your display function you see how much time has passed and you choose which frame you want to display that time. So, basically you’re only drawing one of those images per display call.
If you have a 3 frame animation and you want it to cycle every second, you get the time (from the system or a timer) and if it’s in the first third of the time, draw the first image, if it’s in the second third, draw the 2nd, etc. Make sense?