/* October 2003 * Brian J.Ross * Brock University, Dept of Computer Science * COSC 3P98 Midterm solution A * * A simple gradient renderer. */ #if !defined(Linux) #include //Not Linux must be windows #endif #include #include #include #include #define MINDIM 0 #define MAXDIM 500 struct glob { float xmin; float xmax; }; struct glob global = {0.0, 500.0}; void drawGradient(bot_x, bot_y, top_x, top_y, r1, g1, b1, r2, g2, b2) float bot_x, bot_y, top_x, top_y; int r1, g1, b1, r2, g2, b2; { float delta, r_inc, g_inc, b_inc; float red, green, blue; int x, y; delta = (top_x - bot_x); r_inc = (r2-r1)/delta; g_inc = (g2-g1)/delta; b_inc = (b2-b1)/delta; red = (float)r1; green = (float)g1; blue = (float)b1; glBegin(GL_POINTS); for (x = (int)bot_x; x < top_x; x++) { glColor3ub((short)red, (short)green, (short)blue); for (y = bot_y; y < top_y; y++) { glVertex2f((float)x, (float)y); }; red = red + r_inc; green = green + g_inc; blue = blue + b_inc; }; glEnd(); } void mydisplay(void) { glClear(GL_COLOR_BUFFER_BIT); drawGradient(30.0, 30.0, 250.0, 200.0, 50, 0, 20, 200, 200, 25); glFlush(); } int main(argc, argv) int argc; char **argv; { glutInit(&argc, argv); glutInitWindowSize(MAXDIM, MAXDIM); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("Midterm solution A"); glutDisplayFunc(mydisplay); glMatrixMode(GL_PROJECTION); gluOrtho2D(global.xmin, global.xmax, global.xmin, global.xmax); glClearColor (1.0, 1.0, 1.0, 1.0); glutMainLoop(); return 0; }