89 lines
2.8 KiB
C
89 lines
2.8 KiB
C
#include "pch.c"
|
|
#pragma hdrstop
|
|
|
|
static void display(void)
|
|
{
|
|
GLubyte fly[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, 0x04, 0x60, 0x06, 0x20,
|
|
0x04, 0x30, 0x0C, 0x20, 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
|
|
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, 0x44, 0x01, 0x80, 0x22,
|
|
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
|
|
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, 0x66, 0x01, 0x80, 0x66,
|
|
0x33, 0x01, 0x80, 0xCC, 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
|
|
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, 0x03, 0x31, 0x8c, 0xc0,
|
|
0x03, 0x33, 0xcc, 0xc0, 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
|
|
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, 0x10, 0x63, 0xC6, 0x08,
|
|
0x10, 0x30, 0x0c, 0x08, 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08};
|
|
|
|
GLubyte halftone[] = {
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
|
|
0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
|
|
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
|
|
|
|
glClear (GL_COLOR_BUFFER_BIT);
|
|
|
|
/* draw all polygons in white */
|
|
glColor3f (1.0, 1.0, 1.0);
|
|
|
|
/* draw one solid, unstippled rectangle, */
|
|
/* then two stippled rectangles */
|
|
glRectf (25.0, 25.0, 125.0, 125.0);
|
|
glEnable (GL_POLYGON_STIPPLE);
|
|
glPolygonStipple (fly);
|
|
glRectf (125.0, 25.0, 225.0, 125.0);
|
|
glPolygonStipple (halftone);
|
|
glRectf (225.0, 25.0, 325.0, 125.0);
|
|
glDisable (GL_POLYGON_STIPPLE);
|
|
|
|
glFlush ();
|
|
}
|
|
|
|
static void myinit (void)
|
|
{
|
|
/* clear background to black */
|
|
glClearColor (0.0, 0.0, 0.0, 0.0);
|
|
glShadeModel (GL_FLAT);
|
|
}
|
|
|
|
static void myReshape(GLsizei w, GLsizei h)
|
|
{
|
|
glViewport(0, 0, w, h);
|
|
glMatrixMode(GL_PROJECTION);
|
|
glLoadIdentity();
|
|
glOrtho(0.0, 350, 0.0, 150, -1, 1);
|
|
glMatrixMode(GL_MODELVIEW);
|
|
}
|
|
|
|
#define WIDTH 350
|
|
#define HEIGHT 150
|
|
|
|
static void OglBounds(int *w, int *h)
|
|
{
|
|
*w = WIDTH;
|
|
*h = HEIGHT;
|
|
}
|
|
|
|
static void OglDraw(int w, int h)
|
|
{
|
|
myinit();
|
|
myReshape(w, h);
|
|
display();
|
|
}
|
|
|
|
OglModule oglmod_polys =
|
|
{
|
|
"polys",
|
|
NULL,
|
|
OglBounds,
|
|
NULL,
|
|
OglDraw
|
|
};
|