ABSTRACT

Until several years ago, OpenGL implementations hid resource management from applications. The resource shielding was justified by stating that it enabled a hardware abstraction and a higher level of portability. However, the knowledge about the environment in which an application is executing is more than useful. There is a wide variety of graphics cards, each card with different GPU power and an arbitrary amount of onboard memory. Furthermore, nowadays many computers are equipped with more than one graphics card that can be used for scalable rendering (see Chapter 27). Which of them should be used for a specific task depends on their capabilities (see Chapter 9). Even on a single-accelerator system, an application can make wise decisions, like which level of detail or algorithms to apply, according to available resources. Knowledge about the maximum available resources is useful for the initial setup, but the current state must be tracked during the whole application’s life. The reasons for varying available resources can be various, from the complexity

of the current scene to a competition between different applications for the same resource.