Drawing Basic Graphics Primitives

1 / 18

# Drawing Basic Graphics Primitives - PowerPoint PPT Presentation

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.

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

## PowerPoint Slideshow about 'Drawing Basic Graphics Primitives' - osric

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 - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### 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();

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();