- By
**osric** - Follow User

- 481 Views
- Uploaded on

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

**An Image/Link below is provided (as is) to download presentation**

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

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.
- Shading effects.
- 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();

Example: Draw an X

- 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

Download Presentation

Connecting to Server..