Objectives

Triangles

#include "libopengl.h"

void renderScene(void)
{
  glClear(GL_COLOR_BUFFER_BIT);

  glFlush();
}

void setupRC(void)
{
  glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  glColor3f(0.0f, 1.0f, 0.0f);
  glOrtho (-100.0f, 100.0f, -100.0f, 100.0f, -100.0f, 100.0f);
}

int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
  glutCreateWindow("Lab 05");
  glutDisplayFunc(renderScene);

  setupRC();

  glutMainLoop();

  return 0;
}
  glBegin(GL_TRIANGLES);

    glVertex2f(0.0f, 0.0f);    // V0
    glVertex2f(25.0f, 25.0f);  // V1
    glVertex2f(50.0f, 0.0f);   // V2

    glVertex2f(-50.0f, 0.0f);  // V3
    glVertex2f(-75.0f, 50.0f); // V4
    glVertex2f(-25.0f, 0.0f);  // V5

  glEnd();

Triangle Strips & Fans

  glBegin(GL_TRIANGLE_STRIP);
    glVertex2f(0.0f, 0.0f);    // V0
    glVertex2f(50.0f, 0.0f);   // V1
    glVertex2f(25.0f, 25.0f);  // V2
    glVertex2f(75.0f, 25.0f);  // V3
    glVertex2f(50.0f, 50.0f);  // V4
  glEnd();
  glPolygonMode(GL_FRONT,GL_LINE);
    glVertex2f(0.0f, 0.0f);
    glVertex2f(0.0f, 50.0f);
    glVertex2f(25.0f, 30.0f);
    glVertex2f(40.0f, 0.0f);
    glVertex2f(25.0f, -30.0f);
  glPolygonMode(GL_BACK,GL_LINE);
  glBegin(GL_TRIANGLE_FAN);
    glVertex3f(0.0f, 0.0f, 0.0f);
    float x, y, angle;
    for(angle = 0.0f; angle < (2.0f*M_PI); angle += (M_PI/8.0f))
    {
      x = 50.0f*sin(angle);
      y = 50.0f*cos(angle);

      glVertex2f(x, y);
    }
  glEnd();

Exercises

1. Load GL_LINE_STRIP vertex data

void loadAndDrawLineStrip(char * fileName)
{
  fstream inStream;
  inStream.open(fileName, ios ::in);  // open the file
  if(inStream.fail())
    return;
  glClear(GL_COLOR_BUFFER_BIT);      // clear the screen
  GLint numpolys, numLines, x ,y;
  inStream >> numpolys;              // read the number of polylines
  for(int j = 0; j < numpolys; j++)  // read each polyline
  {
    inStream >> numLines;
    glBegin(GL_LINE_STRIP);      // draw the next polyline
    for (int i = 0; i < numLines; i++)
    {
      inStream >> x >> y;        // read the next x, y pair
      glVertex2i(x, y);
    }
    glEnd();
  }
  glFlush();
  inStream.close();
}

2. STL

3. Triangles, Strips and Fans