23.06.2013 Views

The OpenGL Graphics System: A Specification

The OpenGL Graphics System: A Specification

The OpenGL Graphics System: A Specification

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.4. BASIC GL OPERATION 10<br />

Display<br />

List<br />

Evaluator<br />

Per−Vertex<br />

Operations Rasteriz−<br />

Primitive<br />

Assembly<br />

Pixel<br />

Operations<br />

Figure 2.1. Block diagram of the GL.<br />

2.4 Basic GL Operation<br />

ation<br />

Texture<br />

Memory<br />

Per−<br />

Fragment<br />

Operations<br />

Framebuffer<br />

Figure 2.1 shows a schematic diagram of the GL. Commands enter the GL on the<br />

left. Some commands specify geometric objects to be drawn while others control<br />

how the objects are handled by the various stages. Most commands may be accumulated<br />

in a display list for processing by the GL at a later time. Otherwise,<br />

commands are effectively sent through a processing pipeline.<br />

<strong>The</strong> first stage provides an efficient means for approximating curve and surface<br />

geometry by evaluating polynomial functions of input values. <strong>The</strong> next stage<br />

operates on geometric primitives described by vertices: points, line segments, and<br />

polygons. In this stage vertices are transformed and lit, and primitives are clipped<br />

to a viewing volume in preparation for the next stage, rasterization. <strong>The</strong> rasterizer<br />

produces a series of framebuffer addresses and values using a two-dimensional description<br />

of a point, line segment, or polygon. Each fragment so produced is fed<br />

to the next stage that performs operations on individual fragments before they finally<br />

alter the framebuffer. <strong>The</strong>se operations include conditional updates into the<br />

framebuffer based on incoming and previously stored depth values (to effect depth<br />

buffering), blending of incoming fragment colors with stored colors, as well as<br />

masking and other logical operations on fragment values.<br />

Finally, there is a way to bypass the vertex processing portion of the pipeline to<br />

send a block of fragments directly to the individual fragment operations, eventually<br />

causing a block of pixels to be written to the framebuffer; values may also be read<br />

Version 2.0 - October 22, 2004

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!