|
|
@@ -12,6 +12,7 @@ static int Win; |
|
|
|
static int WinWidth = 600, WinHeight = 400; |
|
|
|
static GLfloat Xrot = 0, Yrot = 0; |
|
|
|
static GLboolean CylWrap = GL_TRUE; |
|
|
|
static GLboolean Lines = GL_FALSE; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -32,17 +33,35 @@ DrawSample(GLboolean wrap) |
|
|
|
|
|
|
|
glEnable(GL_TEXTURE_2D); |
|
|
|
|
|
|
|
/* texured quad */ |
|
|
|
glBegin(GL_QUAD_STRIP); |
|
|
|
for (p = 0.0; p <= 1.001; p += 0.1) { |
|
|
|
float x = -2.0 + p * 4.0; |
|
|
|
float s = p + 0.5; |
|
|
|
if (wrap && s > 1.0) |
|
|
|
s -= 1.0; |
|
|
|
glTexCoord2f(s, 0); glVertex2f(x, -1); |
|
|
|
glTexCoord2f(s, 1); glVertex2f(x, +1); |
|
|
|
if (Lines) { |
|
|
|
/* texured lines */ |
|
|
|
float t; |
|
|
|
for (t = 0; t <= 1.0; t += 0.125) { |
|
|
|
float y = -1.0 + 2.0 * t; |
|
|
|
glBegin(GL_LINE_STRIP); |
|
|
|
for (p = 0.0; p <= 1.001; p += 0.05) { |
|
|
|
float x = -2.0 + p * 4.0; |
|
|
|
float s = p + 0.5; |
|
|
|
if (wrap && s > 1.0) |
|
|
|
s -= 1.0; |
|
|
|
glTexCoord2f(s, t); glVertex2f(x, y); |
|
|
|
} |
|
|
|
glEnd(); |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
/* texured quads */ |
|
|
|
glBegin(GL_QUAD_STRIP); |
|
|
|
for (p = 0.0; p <= 1.001; p += 0.1) { |
|
|
|
float x = -2.0 + p * 4.0; |
|
|
|
float s = p + 0.5; |
|
|
|
if (wrap && s > 1.0) |
|
|
|
s -= 1.0; |
|
|
|
glTexCoord2f(s, 0); glVertex2f(x, -1); |
|
|
|
glTexCoord2f(s, 1); glVertex2f(x, +1); |
|
|
|
} |
|
|
|
glEnd(); |
|
|
|
} |
|
|
|
glEnd(); |
|
|
|
|
|
|
|
glDisable(GL_TEXTURE_2D); |
|
|
|
|
|
|
@@ -138,6 +157,10 @@ Key(unsigned char key, int x, int y) |
|
|
|
else |
|
|
|
printf("Cylindrical wrap off.\n"); |
|
|
|
break; |
|
|
|
case 'l': |
|
|
|
case 'L': |
|
|
|
Lines = !Lines; |
|
|
|
break; |
|
|
|
case 27: |
|
|
|
glutDestroyWindow(Win); |
|
|
|
exit(0); |
|
|
@@ -215,6 +238,7 @@ Init(void) |
|
|
|
glPointSize(3.0); |
|
|
|
|
|
|
|
printf("Press 'c' to toggle cylindrical wrap mode.\n"); |
|
|
|
printf("Press 'l' to toggle line / quad drawing.\n"); |
|
|
|
} |
|
|
|
|
|
|
|
|