You are on page 1of 14

#include <stdlib.

h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <glut.h>

typedef enum {RESERVED, S_SIDE, S_EDGE, S_WHOLE, J_SIDE, J_EDGE, J_WHOLE,


C_SIDE, C_EDGE, C_WHOLE,I_SIDE,I_EDGE,I_WHOLE, T_SIDE, T_EDGE, T_WHOLE,REPEAT_SIDE,
REPEAT_EDGE, REPEAT1,
REPEAT2_SIDE, REPEAT2_EDGE,REPEAT2, REPEAT3_SIDE, REPEAT3_EDGE,REPEAT3,
REPEAT4_SIDE, REPEAT4_EDGE,REPEAT4,REPEAT5_SIDE, REPEAT5_EDGE,REPEAT5} displayLists;

GLfloat sideColor[] = {0.0, 0.0, 0.5, 1.0};


GLfloat edgeColor[] = {0.7, 0.7, 0.0, 1.0};
GLfloat shininess[] = {128.0};
GLfloat mat_specular[] = {0.7, 0.7, 0.7, 1.0};

GLfloat width = 0.0;


GLfloat width2 = 1.0;
int pos=1;

GLfloat letterS[][3] =
{
{-2.0,0.0,0.0},
{-2.0,2.0,0.0},
{-1.0,2.0,0.0},
{-1.0,1.0,0.0},
{1.0,1.0,0.0},
{1.0,3.0,0.0},
{-2.0,3.0,0.0},
{-2.0,7.0,0.0},
{2.0,7.0,0.0},
{2.0,5.0,0.0},
{1.0,5.0,0.0},
{1.0,6.0,0.0},
{-1.0,6.0,0.0},
{-1.0,4.0,0.0},
{2.0,4.0,0.0},
{2.0,0.0,0.0}

};

GLfloat letterJ[][3] =
{

{-2.0,0.0,0.0},
{-2.0,2.50,0.0},
{-1.0,2.50,0.0},
{-1.0,1.50,0.0},
{1.0,1.50,0.0},
{1.0,7.0,0.0},
{2.0,7.0,0.0},
{2.0,0.0,0.0}
};

GLfloat letterC[][3] =
{
{-2.0,0.0,0.0},
{-2.0,7.0,0.0},
{2.0,7.0,0.0},
{2.0,5.0,0.0},
{1.0,5.0,0.0},
{1.0,6.0,0.0},
{-1.0,6.0,0.0},
{-1.0,1.0,0.0},
{1.0,1.0,0.0},
{1.0,2.0,0.0},
{2.0,2.0,0.0},
{2.0,0.0,0.0}
};
GLfloat letterI[][3]=
{
{-0.5,0.0,0.0},
{-0.5,7.0,0.0},
{0.5,7.0,0.0},
{0.5,0.0,0.0}
};

GLfloat letterT[][3] =
{
{-2.0,7.0,0.0},
{2.0,7.0,0.0},
{2.0,6.0,0.0},
{0.5,6.0,0.0},
{0.5,0.0,0.0},
{-0.5,0.0,0.0},
{-0.5,6.0,0.0},
{-2.0,6.0,0.0}
};

void myinit(void)
{
int count1 = sizeof(letterS) / (3 * sizeof(GLfloat));
int count2 = sizeof(letterJ) / (3 * sizeof(GLfloat));
int count3 = sizeof(letterC) / (3 * sizeof(GLfloat));
int count4 = sizeof(letterI) / (3 * sizeof(GLfloat));
int count5 = sizeof(letterT) / (3 * sizeof(GLfloat));

int i;

GLfloat light_ambient[] = { 1.0, 1.0, 1.0, 1.0 };


GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 };
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);

glDrawBuffer(GL_FRONT_AND_BACK);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glClear(GL_ACCUM_BUFFER_BIT);
glDrawBuffer(GL_BACK);

/* Zero position of text */


for(i = 0; i < count1; i++) {
letterS[i][1] = letterS[i][1] - 3.175;
}
for(i = 0; i < count2; i++) {
letterJ[i][1] = letterJ[i][1] - 3.175;
}
for(i = 0; i < count3; i++) {
letterC[i][1] = letterC[i][1] - 3.175;
}
for(i = 0; i < count4; i++) {
letterI[i][1] = letterI[i][1] - 3.175;
}
for(i = 0; i < count5; i++) {
letterT[i][1] = letterT[i][1] - 3.175;
}
}

void extrudeSolidFromPolygon(GLfloat data[][3], unsigned int dataSize,


GLdouble thickness, GLuint side, GLuint edge, GLuint whole)
{
GLdouble vertex[3], dx, dy, len;
int i, k;
int flag = 0;
int count = dataSize / (3 * sizeof(GLfloat));
static GLUtriangulatorObj *tobj = NULL;

if (tobj == NULL) {
tobj = gluNewTess();

gluTessCallback(tobj, GLU_BEGIN, glBegin);


gluTessCallback(tobj, GLU_VERTEX, glVertex3fv);
gluTessCallback(tobj, GLU_END, glEnd);
}
glNewList(side, GL_COMPILE);
glShadeModel(GL_SMOOTH);
gluBeginPolygon(tobj);
for(i = 0; i < count; i++)
{
if (data[i][2] > 1000.0) {
data[i][2] = 0.0;
flag = 1; k = i;
gluNextContour(tobj, GLU_INTERIOR);
}

vertex[0] = data[i][0];
vertex[1] = data[i][1];
vertex[2] = 0.0;
gluTessVertex(tobj, vertex, data[i]);
}
gluEndPolygon(tobj);
glEndList();

if (flag == 1) {
data[k][2] = 10000.0;
flag = 0;
}
glNewList(edge, GL_COMPILE);
glBegin(GL_QUAD_STRIP);
for(i = 0; i <= count; i++) {
glVertex3f(data[i % count][0], data[i % count][1], 0.0);
glVertex3f(data[i % count][0], data[i % count][1], thickness);
dx = data[(i+ 1) % count][1] - data[i % count][1];
dy = data[i % count][0] - data[(i + 1) % count][0];
len = sqrt(dx * dx + dy * dy);
glNormal3f(dx / len, dy / len, 0.0);
}
glEnd();
glEndList();

glNewList(whole, GL_COMPILE);
glFrontFace(GL_CW);

glMaterialfv(GL_FRONT, GL_DIFFUSE, edgeColor);


glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

glCallList(edge);
glNormal3f(0.0, 0.0, -1.0);
glCallList(side);
glPushMatrix();
glTranslatef(0.0, 0.0, thickness);
glFrontFace(GL_CCW);
glNormal3f(0.0, 0.0, 1.0);

glMaterialfv(GL_FRONT, GL_DIFFUSE, sideColor);


glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

glCallList(side);
glPopMatrix();
glEndList();
}

void repeat(int j)
{
switch(pos)
{
case 1:{
if(j == 2){
glPushMatrix();
glTranslatef((31 * -0.4) , 9, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.20, 9, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0, 9, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0, 9, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, 9, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0, 9, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * .2, 9, -9);
glCallList(REPEAT4);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * .4, 9, -9);
glCallList(REPEAT5);
glPopMatrix();
}
break;
}
case 4:{
if(j == 2){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 3, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -3, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -3, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, -9, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * -0.4, 9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, 3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -3, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, -9, -9);
glCallList(REPEAT4);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.4, -15, -9);
glCallList(REPEAT5);
glPopMatrix();
}
break;
}
case 5:{
if(j == 2){
glPushMatrix();
glTranslatef(31 * -0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * -0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * -0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * -0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -15, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * -0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -15, -9);
glCallList(REPEAT4);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -0.5, -25, -9);
glCallList(REPEAT5);
glPopMatrix();
}
break;
}
case 6:{
if(j == 2){
glPushMatrix();
glTranslatef(31 * 0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * 0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * 0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * 0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, -15, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * 0.5, 15, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, 5, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, -5, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * .5, -15, -9);
glCallList(REPEAT4);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.5, -25, -9);
glCallList(REPEAT5);
glPopMatrix();
}
break;
}
case 2:{
if(j == 2){
glPushMatrix();
glTranslatef((31 * -0.4) , -9, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -9, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -9, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -9, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, -9, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -9, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, -9, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, -9, -9);
glCallList(REPEAT4);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.4, -9, -9);
glCallList(REPEAT5);
glPopMatrix();
}
break;
}
case 3:
{

if(j == 2){
glPushMatrix();
glTranslatef((31 * -0.4) , -9, -9);
glCallList(REPEAT1);
glPopMatrix();
}
if(j == 3){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -3, -9);
glCallList(REPEAT2);
glPopMatrix();
}
if(j == 4){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0, 3, -9);
glCallList(REPEAT3);
glPopMatrix();
}
if(j == 5){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, 3, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, 9, -9);
glCallList(REPEAT4);
glPopMatrix();
}
if(j == 6){
glPushMatrix();
glTranslatef(31 * -0.4, -9, -9);
glCallList(REPEAT1);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * -.2, -3, -9);
glCallList(REPEAT2);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.0, 3, -9);
glCallList(REPEAT3);
glPopMatrix();
glPushMatrix();
glTranslatef(31 * 0.2, 9, -9);
glCallList(REPEAT4);
glPopMatrix();
glTranslatef(31 * 0.4, 15, -9);
glCallList(REPEAT5);
glPopMatrix();
}
}
break;
}
}

void display(void)
{
int i, j;
GLfloat xPos = -0.4,yPos=-.5;
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glTranslatef(0.0, 0.0, -10.0);

extrudeSolidFromPolygon(letterS, sizeof(letterS), width2, REPEAT_SIDE,


REPEAT_EDGE, REPEAT1);
extrudeSolidFromPolygon(letterJ, sizeof(letterJ), width2, REPEAT2_SIDE,
REPEAT2_EDGE, REPEAT2);
extrudeSolidFromPolygon(letterC, sizeof(letterC), width2, REPEAT3_SIDE,
REPEAT3_EDGE, REPEAT3);
extrudeSolidFromPolygon(letterI, sizeof(letterI), width2, REPEAT4_SIDE,
REPEAT4_EDGE, REPEAT4);
extrudeSolidFromPolygon(letterT, sizeof(letterT), width2, REPEAT5_SIDE,
REPEAT5_EDGE, REPEAT5);

for(j = 1; j < 7; j++){


width = 0.0;

for(i = 0; i < 10; i++){


glPushMatrix();
repeat(j);
glPopMatrix();

glPushMatrix();
glRotatef(90.0, 0.0, 1.0, 0.0);
if(j == 1){
extrudeSolidFromPolygon(letterS, sizeof(letterS),
width, S_SIDE,S_EDGE, S_WHOLE);
glCallList(S_WHOLE);
}
if(j == 2){
extrudeSolidFromPolygon(letterJ, sizeof(letterJ),
width, J_SIDE,J_EDGE, J_WHOLE);
glCallList(J_WHOLE);
}
if(j == 3){
extrudeSolidFromPolygon(letterC, sizeof(letterC),
width, C_SIDE,C_EDGE, C_WHOLE);
glCallList(C_WHOLE);
}
if(j == 4){
extrudeSolidFromPolygon(letterI, sizeof(letterI),
width, I_SIDE,I_EDGE, I_WHOLE);
glCallList(I_WHOLE);
}
if(j == 5){
extrudeSolidFromPolygon(letterT, sizeof(letterT),
width, T_SIDE,T_EDGE, T_WHOLE);
glCallList(T_WHOLE);
}
glutSwapBuffers();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
width = width + 0.1;
glPopMatrix();
}
for(i = 0; i < 45 ; i++){

glPushMatrix();
repeat(j);
glPopMatrix();

glPushMatrix();
glRotatef(90.0 - (2.0 * i), 0.0, 1.0, 0.0);
if(j == 1){
glCallList(S_WHOLE);
}
if(j == 2){
glCallList(J_WHOLE);
}
if(j == 3){
glCallList(C_WHOLE);
}
if(j == 4){
glCallList(I_WHOLE);
}
if(j == 5){
glCallList(T_WHOLE);
}
glutSwapBuffers();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPopMatrix();
}
for(i = 1; i < 32 ; i++){

glPushMatrix();
repeat(j);
glPopMatrix();

glPushMatrix();
if(pos==1)
glTranslatef(i * xPos, i * 0.3, i * -0.3);
else if(pos==2)
glTranslatef(i * xPos, i * -0.3, i * -0.3);
else if(pos==3)
glTranslatef(i * xPos, i * xPos, i * -0.3);
else if(pos==4)
glTranslatef(i * xPos, i * -xPos, i * -0.3);
else if(pos==5)
glTranslatef(i * -0.5, i * -yPos, i * -0.3);
else if(pos==6)
glTranslatef(i * 0.5, i * -yPos, i * -0.3);
if(j == 1){
glCallList(S_WHOLE);
}
if(j == 2){
glCallList(J_WHOLE);
}
if(j == 3){
glCallList(C_WHOLE);
}
if(j == 4){
glCallList(I_WHOLE);
}
if(j == 5){
glCallList(T_WHOLE);
}
glutSwapBuffers();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPopMatrix();
}

if(pos==5 || pos==6)
yPos+=0.32;
else
xPos = xPos + 0.2;

}
glFlush();
}

void myReshape(int w, int h)


{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(pos==5 || pos==6)
glFrustum(-10.0, 10.0, -10.0, 10.0, 6.0, 20.0);
else
{
glLoadIdentity();
glFrustum(-7.0, 7.0, -7.0, 7.0, 6.0, 20.0);
}
glMatrixMode(GL_MODELVIEW);
}

void mainmenu(int num)


{
if(num==0)
pos=1;
else if(num==1) pos=2;
else if(num==2) pos=3;
else if(num==3) pos=4;
else if(num==4) pos=5;
else if(num==5) pos=6;
display();
}

void main(int argc, char** argv)


{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(1200,1200);
glutCreateWindow ("text3d");
myinit();
glutCreateMenu(mainmenu);
glutAddMenuEntry("Top",0);
glutAddMenuEntry("Bottom",1);
glutAddMenuEntry("Bottom To Top",2);
glutAddMenuEntry("Top To Bottom",3);
glutAddMenuEntry("Left",4);
glutAddMenuEntry("Right",5);
glutReshapeFunc (myReshape);
glutAttachMenu(GLUT_RIGHT_BUTTON);
glutDisplayFunc (display);
glutMainLoop();

You might also like