In addition to window creation, handling, and event-processing functions, the library also provides several object creation functions. And, just for fun, a teapot is available at the request of a single function call. 3D programming is quite math intensive, relying on passing objects through 4x4 floating point transform matrices in order to figure out how a bunch of rotated, transformed, scaled objects map to a rotated, transformed, scaled projection. While those strong in math are welcome to manipulate the various matrices directly, those to whom math is rather intimidating can still produce impressive results using OpenGL and nothing but the simplest trigonometry. Texture mapping Figure 3.
Texture mapping is computationally intensive.
Rather than trying to represent all the detail of a scene with individual geometry, it also turns out to be much faster to texture map fine details onto a surface than add many more triangles. This means two different texture maps can be applied to an object in one pass. So, for example, one texture might be the usual surface texture of a brick wall, and the other texture might be a light-map from a nearby lightbulb. Texture mapping is extremely computationally intensive, and it becomes even more so as additional filtering is turned on. The filtering is desired in order to make the textures look reasonable when they're displayed at sharp angles or at a partial magnification.