/* draw.c
An absolutely minimal line drawing program. */
#include <gl/gl.h> #include <gl/device.h>
main() {
Device dev; short val; unsigned short xpos, ypos;
initialize(); while(TRUE) { dev = qread(&val); switch(dev) { /* wait for mouse down */ case ESCKEY: /* quit */ gexit(); exit(0); case REDRAW: reshapeviewport(); color(BLACK); clear(); color(RED); break; case MIDDLEMOUSE: /* move */ qread(&xpos); qread(&ypos); move2i(xpos, ypos); qread(&val); /* these three reads clear out */ qread(&val); /* the queue */ qread(&val); break; case LEFTMOUSE: /* draw */ qread(&xpos); qread(&ypos); draw2i(xpos, ypos); qread(&val); qread(&val); qread(&val); break; } }
}
initialize() {
int gid; float xmax,ymax;
prefposition(XMAXSCREEN/4, XMAXSCREEN*3/4, YMAXSCREEN/4, YMAXSCREEN*3/4); gid = winopen("draw"); xmax = .5 + (float) XMAXSCREEN; ymax = .5 + (float) YMAXSCREEN; ortho2(xmax/4.0,xmax*3.0/4.0,ymax/4.0,ymax*3.0/4.0); qdevice(ESCKEY); qdevice(LEFTMOUSE); qdevice(MIDDLEMOUSE); tie(LEFTMOUSE, MOUSEX, MOUSEY); tie(MIDDLEMOUSE, MOUSEX, MOUSEY); color(BLACK); clear(); color(RED);
}
The getdrawmode subroutine.
Understanding the Frame Buffer in GL in GL3.2 Version 4 for AIX: Programming Concepts explains the use of different buffers.