This is a simple OpenGL program that draws a set of vertices using various point and line primitives.
 
primitives.cc:
// Peter Bui
// CSE 40166 Computer Graphics (Fall 2010)
// Example 3: fun with OpenGL primitives
#include "color.h"
 
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
using namespace std;
// Constants -------------------------------------------------------------------
#define NVERTICES 6
GLfloat VERTICES[NVERTICES][2] = {
    { 0.0,  0.0},
    { 5.0,  0.0},
    { 7.5,  2.5},
    { 5.0,  5.0},
    { 0.0,  5.0},
    {-2.5,  2.5}
};
#define NPRIMITIVES 4
int PRIMITIVES[NPRIMITIVES] = {
    GL_POINTS,
    GL_LINES,
    GL_LINE_STRIP,
    GL_LINE_LOOP
};
// Global variables ------------------------------------------------------------
static int WindowWidth  = 640;
static int WindowHeight = 480;
static int BackgroundColor = COLOR_BLACK;
// Initialize viewing ----------------------------------------------------------
void
init()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-5.0, 10.0, -5.0, 10.0);
    glMatrixMode(GL_MODELVIEW);
    
    glClearColor(ColorTable[BackgroundColor][0],
                 ColorTable[BackgroundColor][1], 
                 ColorTable[BackgroundColor][2], 
                 1.0);
    glEnable(GL_POINT_SMOOTH);
}
// Display callback ------------------------------------------------------------
void 
display()
{
    int ViewportWidth  = WindowWidth*2  / NPRIMITIVES;
    int ViewportHeight = WindowHeight*2 / NPRIMITIVES;
    glClear(GL_COLOR_BUFFER_BIT);
    for (int p = 0; p < NPRIMITIVES; p++) {
        glViewport((p % 2) * ViewportWidth, (p < 2) ? ViewportHeight : 0, ViewportWidth, ViewportHeight);
        glColor3fv(color_rotate());
        glBegin(PRIMITIVES[p]); {
            for (int i = 0; i < NVERTICES; i++) 
                glVertex2fv(VERTICES[i]);
        }glEnd();
    }
    
    glFlush();
}
// Keyboard callback -----------------------------------------------------------
void
keyboard(unsigned char key, int x, int y)
{
    if (key == 'q' || key == 'Q')
        exit(EXIT_SUCCESS);
}
// Show usage ------------------------------------------------------------------
void
show_usage()
{
    printf("usage: primitives [options]\n");
    printf("General Options:\n");
    printf("  -h             Show this help message\n");
    printf("\nWindow Options:\n");
    printf("  -W <width>     Set window width\n");
    printf("  -H <height>    Set window height\n");
}
// Parse command line arguments ------------------------------------------------
    
void
parse_command_line_arguments(int argc, char *argv[])
{
    int c;
    while ((c = getopt(argc, argv, "W:H:h")) >= 0) {
        switch (c) {
            case 'W': 
                WindowWidth  = strtol(optarg, NULL, 10); 
                break;
            case 'H': 
                WindowHeight = strtol(optarg, NULL, 10); 
                break;
            case 'h':
                show_usage();
                exit(EXIT_SUCCESS);
                break;
            default:
                fprintf(stderr, "primitives: unknown command line argument %c\n", c);
                show_usage();
                exit(EXIT_FAILURE);
                break;
        }
    }
}
// Main execution --------------------------------------------------------------
int 
main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    parse_command_line_arguments(argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowSize(WindowWidth, WindowHeight);
    glutCreateWindow("primitives");
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    init();
    glutMainLoop();     
    return (EXIT_SUCCESS);
}
// vim: sts=4 sw=4 ts=8 ft=cpp
color.h:
#ifndef COLOR_H
#define COLOR_H
#ifdef __APPLE__
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>
#endif
GLfloat ColorTable[][3] = {
    { 0.0, 0.0, 0.0 },
    { 1.0, 0.0, 0.0 },
    { 0.0, 1.0, 0.0 },
    { 0.0, 0.0, 1.0 },
    { 1.0, 1.0, 0.0 },
    { 1.0, 0.0, 1.0 },
    { 0.0, 1.0, 1.0 },
    { 1.0, 1.0, 1.0 },
};
enum COLOR_TABLE_INDEX {
    COLOR_BLACK = 0,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_BLUE,
    COLOR_YELLOW,
    COLOR_MAGENTA,
    COLOR_CYAN,
    COLOR_WHITE,
    COLOR_UNKNOWN
};
GLfloat *
color_rotate() {
    static int index = COLOR_BLACK;
    
    index = (index + 1) % COLOR_WHITE;
    return ColorTable[index];
}
#endif