# Drawing Basic Graphics Primitives - PowerPoint PPT Presentation

1 / 18

Drawing Basic Graphics Primitives. Lecture 4 Wed, Sep 3, 2003. OpenGL Functions. OpenGL function names always begin with gl, glu, or glut, depending on the library. Names of functions that allow a variable number of arguments are followed by a digit indicating the number.

## Related searches for Drawing Basic Graphics Primitives

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Drawing Basic Graphics Primitives

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

## Drawing Basic Graphics Primitives

Lecture 4

Wed, Sep 3, 2003

### OpenGL Functions

• OpenGL function names always begin with gl, glu, or glut, depending on the library.

• Names of functions that allow a variable number of arguments are followed by a digit indicating the number.

• Names of functions that allow various argument types are followed by a letter indicating the type.

### State Variables

• OpenGL maintains a large number of state variables.

• These state variables are global – they are in effect and accessible within all functions.

• Some states are

• Colors used in various situations.

• Lighting effects.

### Setting the Color

• One of the states maintained is the current color used for drawing.

• The color is a combination of red, green, and blue.

• Use glColor*() to set the current color.

• glColor3f(1.0, 0.0, 0.0) – bright red.

• glColor3f(1.0, 1.0, 0.0) – bright yellow.

• glColor3f(0.5, 0.5, 0.5) – medium gray.

### Drawing Dots

• To color a single pixel, use the glVertex*() function.

• glVertex2i(int, int).

• glVertex3f(float, float, float), etc.

• The pixel is colored with the current color, as set by glColor().

• The coordinates are in “world” coordinates, not screen coordinates.

### Primitive Objects

• The pixel-drawing function is called glVertex() because the pixel is typically a vertex in a polygon.

• The programmer must indicate to the GPU whether the point is an isolated point or part of a line or polygon.

• To do this, use glBegin() and glEnd() to enclose the vertices of the primitive objects.

### Primitive Objects

• glBegin(type) defines the type of object to be drawn.

• Some values of typeare

• GL_POINTS

• GL_LINES

• GL_TRIANGLES

• GL_POLYGON

• glEnd() marks the end of the object.

### Creating Points

• The following program segment will draw three pixels.

glBegin(GL_POINTS);

glVertex2i(10, 20);

glVertex2i(50, 20);

glVertex2i(50, 50);

glEnd():

### Creating Triangles

• The following program segment will draw and fill a triangle.

glBegin(GL_TRIANGLES);

glVertex2i(10, 20);

glVertex2i(50, 20);

glVertex2i(50, 50);

glEnd():

### Creating Triangles

• The following program segment will draw, but not fill, a triangle.

glBegin(GL_LINE_LOOP);

glVertex2i(10, 20);

glVertex2i(50, 20);

glVertex2i(50, 50);

glEnd():

### Drawing Primitives

• For points, the size of the drawing pen is set by the function glPointSize(size).

• For lines, the pen width is defined by the function glLineWidth(width).

• The size and width are measured in pixels.

### Example: DrawDots

• DrawDots.cpp

• Why does each dot disappear when the next dot is drawn?

• How could we modify the program so that all the dots remained?

• Do not clear the buffer, but keep adding to it?

• Store all the points in a list and draw each one every time?

• What happens when the window is resized?

### Making Line Drawings

• Drawing lines is similar to drawing points and triangles.

• Use glBegin(GL_LINES);

• Every pair of points drawn between glBegin() and glEnd() is rendered as a line.

• We may list many pairs of points.

### Example: Draw an X

• The following program segment will draw two line segments that form an X.

glBegin(GL_LINES);

glVertex2i(50, 50);

glVertex2i(100, 100);

glVertex2i(50, 100);

glVertex2i(100, 50);

glEnd();

• DrawX.cpp

### Drawing Polygons

• If we use GL_POLYGON in the glBegin() function, then the entire list of points is used to draw a single polygon.

• What would the last example look like?

• Why not use GL_POLYGON to draw several polygons in one group, just as with GL_LINES?

### Example: Draw an Octagon

• The following program segment will draw a regular octagon.

int cx = 100, cy = 100;

glBegin(GL_POLYGON);

for (int i = 0; i < 8; i++)

{

float dx = cos(i*PI/4);

float dy = sin(i*PI/4);

glVertex2i(x + 100*dx, y + 100*dy);

}

glEnd();

### Example: Draw an Octagon

• DrawOctagon.cpp