#include #include #include #include #define RGB(r,g,b) ((((int)(r) & 0x1f) << 11) | (((int)(g) & 0x2f) << 5) | ((int)(b) & 0x1f)) int main(int argc, char *argv[]) { GraphicsContext *context; int mode = G800x600x64K; int x,y; int xmax,ymax; int midx,midy; float r,g,b; float color; vga_init(); vga_setmode(mode); gl_setcontextvga(mode); context = gl_allocatecontext(); gl_getcontext(context); xmax = vga_getxdim(); ymax = vga_getydim(); midx = xmax / 2; midy = ymax / 2; r = (float)0x1f; g = b = 0.0; x = y = 0; for (b = 0.0; b < (float)0x1f; b += 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; g < 0x2f; g += 1.5) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; r > 0.0; r -= 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; b > 0.0; b -= 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; r < (float)0x1f; r += 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; b < (float)0x1f; b += 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; b > 0.0; b -= 1.0) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } for (; g > 0.0; g -= 1.5) { color = RGB(r,g,b); gl_line(midx,midy,x,0,color); x += 3; } getchar(); printf("\n"); vga_setmode(TEXT); return 0; }