Goal: Learn to use OpenGL display lists, vertex arrays, and vertex buffer objects. Also learn to add simple blending.
Problem 1: User can switch between immediate mode rendering, rendering from a display list, rendering with vertex arrays and rendering with vertex arrays stored in vertex buffer object. They can also switch between different window resolutions. The images below are 1024x1024 resolution. the 250K dragon is displayed using a display list and the yeahRight model is displayed using VBO. The table shows the results of the different images being rendered in the four different modes with different screen resolutions (in frames per second).
| Model |
Resolution |
Immediate Mode | Display List | Vertex Arrays | VBO |
| dragon_10k | 128x128 | 1000 | 8100 | 1300 | 6600 |
| 256x256 | 1000 | 7800 | 1300 | 6100 | |
| 512x512 | 1000 | 4300 | 1200 | 3500 | |
| 1024x1024 | 1000 | 1600 | 800 | 1400 | |
| dragon_250k | 128x128 | 219 | 700 | 141 | 220 |
| 256x256 | 219 | 700 | 140 | 219 | |
| 512x512 | 219 | 650 | 139 | 218 | |
| 1024x1024 | 215 | 550 | 131 | 216 | |
| dragon_871k | 128x128 | 12 | 30 | 39 | 92 |
| 256x256 | 12 | 30 | 39 | 91 | |
| 512x512 | 12 | 30 | 39 | 91 | |
| 1024x1024 | 12 | 30 | 38 | 90 | |
| buddha_50k | 128x128 | 200 | 4000 | 387 | 2300 |
| 256x256 | 200 | 3600 | 384 | 2100 | |
| 512x512 | 200 | 2500 | 372 | 1750 | |
| 1024x1024 | 200 | 1200 | 328 | 1020 | |
| buddha_250k | 128x128 | 42 | 700 | 140 | 222 |
| 256x256 | 42 | 680 | 140 | 221 | |
| 512x512 | 41 | 650 | 138 | 221 | |
| 1024x1024 | 41 | 520 | 131 | 219 | |
| buddha_1087k | 128x128 | 10 | 24 | 32 | 76 |
| 256x256 | 10 | 24 | 32 | 75 | |
| 512x512 | 10 | 24 | 32 | 75 | |
| 1024x1024 | 10 | 24 | 31 | 75 | |
| Cube | 128x128 | 7750 | 7800 | 7700 | 7700 |
| 256x256 | 7750 | 7800 | 7700 | 7700 | |
| 512x512 | 5600 | 5500 | 5500 | 5500 | |
| 1024x1024 | 1500 | 1500 | 1500 | 1500 | |
| Bunny | 128x128 | 140 | 2050 | 167 | 935 |
| 256x256 | 140 | 1850 | 166 | 800 | |
| 512x512 | 139 | 1350 | 164 | 750 | |
| 1024x1024 | 139 | 780 | 155 | 500 | |
| YeahRight | 128x128 | 13.8 | 34.1 | 45.4 | 104 |
| 256x256 | 13.8 | 33.9 | 45.4 | 103 | |
| 512x512 | 13.8 | 33.9 | 45.4 | 102 | |
| 1024x1024 | 13.8 | 33.9 | 44.9 | 102 |
The user can also control the alpha value on the sphere. They use the + and - keys to add or subtract .1 to the alpha value. The values range from 0 (the sphere doesn't show up at all) to 1 (where none of the background objects can be seen. The below images are for alpha values .1, .3, .5, .7, .9 and 1, using GL_DECAL.