Graphics Reference
In-Depth Information
to OpenGL graphics programming, and in some sense all the later OpenGL
developments are mainly evolutions of this approach. This version includes a
few of these evolutionary steps, including
•
Vertex buffer objects let you store vertex arrays in graphics memory to
reduce the amount of communication needed between the CPU and card.
•
Occlusion queries let you ask how many pixels a particular scene element
would occupy if displayed.
•
Texture-mapped point sprites let you create many small 2D objects for
uses such as particle systems.
•
Separate stencil operations for front and back faces give you beter sup-
port for shadowing.
OpenGL 3.x/GLSL 3.30
OpenGL 3.0 and GLSL 3.00 is a major revision in the standard that reflected
the growing processing power in graphics cards. It introduces geometry shad-
ers, the next development in shader technology and the subject of Chapter 12.
It also includes several new types of objects to store structured data on the
graphics card.
•
Frame buffer objects let you render into non-displayable buffers for such
uses as render-to-texture.
•
Texture buffer objects allow you to use much larger texture arrays.
•
Uniform buffer objects let you define a collection of uniform variables so
that you can quickly switch between different sets of uniform variables
(typically different ways to present a set of primitives) in a single pro-
gram object or share the same set of uniform variables between different
program objects.
All OpenGL buffer objects share the capability to replace a range of data in the
buffer instead of having to replace the data one item at a time.
The OpenGL 3.* and GLSL 3.30 standards also add several new capabili-
ties not available in earlier versions:
•
For textures, you can now define a texture array (sometimes called an
array texture
) that contains a sequence of 1D or 2D textures of the same
size, so you can use different textures without having to do multiple tex-
ture bindings. You can use rectangular textures, which can be useful for
video processing, though these do not have bias or level-of-detail capabil-
ity. You can also query the size of a texture with the new
textureSize( )
function.