void GLThread::setTexture_truth() { const int TEXTURE_SIZE = 256; glMatrixMode (GL_TEXTURE); glLoadIdentity (); unsigned char * pixmap = (unsigned char *) malloc (TEXTURE_SIZE*TEXTURE_SIZE*3*sizeof (unsigned char)); for (int i=0; i< TEXTURE_SIZE; i++) { for (int j=0; j< TEXTURE_SIZE; j++) { pixmap [3*TEXTURE_SIZE*i + 3*j] = truththread_color[0]; pixmap [3*TEXTURE_SIZE*i + 3*j + 1] = truththread_color[1]; pixmap [3*TEXTURE_SIZE*i + 3*j + 2] = truththread_color[2]; } } gluBuild2DMipmaps (GL_TEXTURE_2D, 3, TEXTURE_SIZE, TEXTURE_SIZE, GL_RGB, GL_UNSIGNED_BYTE, (void *) (pixmap)); delete pixmap; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_CYL); glEnable (GL_TEXTURE_2D); }
/* main OpenGL initialization routine */ static void initializeGL(ModeInfo *mi, GLsizei width, GLsizei height) { int style; int mode; reshape_extrusion(mi, width, height); glViewport( 0, 0, width, height ); glEnable(GL_DEPTH_TEST); glDisable (GL_CULL_FACE); glLightModeli (GL_LIGHT_MODEL_TWO_SIDE, True); glShadeModel(GL_SMOOTH); # ifdef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */ MI_IS_WIREFRAME(mi) = 0; # endif if (do_light) SetupLight(); if (MI_IS_WIREFRAME(mi)) { glPolygonMode(GL_FRONT,GL_LINE); glPolygonMode(GL_BACK,GL_LINE); } if (do_texture) { Create_Texture(mi, which_image); glEnable(GL_TEXTURE_2D); /* configure the pipeline */ style = TUBE_JN_CAP; style |= TUBE_CONTOUR_CLOSED; style |= TUBE_NORM_FACET; style |= TUBE_JN_ANGLE; gleSetJoinStyle (style); if (do_texture) { mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_FLAT; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (0.25, 0.1, 1); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); } } }
void TextureStyle (int msg) { int mode = 0; switch (msg) { case 301: glDisable (GL_TEXTURE_2D); break; case 302: glEnable (GL_TEXTURE_2D); break; case 501: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_FLAT; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 502: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_FLAT; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 503: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_CYL; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 504: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_CYL; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 505: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_SPH; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 506: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_SPH; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 507: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_FLAT; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 508: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_FLAT; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (0.1, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 509: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_CYL; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 510: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_CYL; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 511: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_MODEL_SPH; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 512: mode = GLE_TEXTURE_ENABLE | GLE_TEXTURE_NORMAL_MODEL_SPH; glMatrixMode (GL_TEXTURE); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); gleTextureMode (mode); break; case 701: current_texture = check_texture; gluBuild2DMipmaps (GL_TEXTURE_2D, 3, current_texture -> size, current_texture -> size, GL_RGB, GL_UNSIGNED_BYTE, (void *) (current_texture->pixmap)); break; case 702: current_texture = barberpole_texture; gluBuild2DMipmaps (GL_TEXTURE_2D, 3, current_texture -> size, current_texture -> size, GL_RGB, GL_UNSIGNED_BYTE, (void *) (current_texture->pixmap)); break; case 703: current_texture = wild_tooth_texture; gluBuild2DMipmaps (GL_TEXTURE_2D, 3, current_texture -> size, current_texture -> size, GL_RGB, GL_UNSIGNED_BYTE, (void *) (current_texture->pixmap)); break; case 704: current_texture = planet_texture; gluBuild2DMipmaps (GL_TEXTURE_2D, 3, current_texture -> size, current_texture -> size, GL_RGB, GL_UNSIGNED_BYTE, (void *) (current_texture->pixmap)); break; case 99: exit (0); default: break; } glutPostRedisplay(); }
int main (int argc, char * argv[]) { /* initialize glut */ glutInit (&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutCreateWindow ("texture"); glutDisplayFunc (DrawStuff); glutMotionFunc (MouseMotion); /* create popup menu */ glutCreateMenu (TextureStyle); glutAddMenuEntry ("Texture Off", 301); glutAddMenuEntry ("Texture On", 302); glutAddMenuEntry ("--------------", 9999); glutAddMenuEntry ("Vertex Flat", 501); glutAddMenuEntry ("Normal Flat", 502); glutAddMenuEntry ("Vertex Cylinder", 503); glutAddMenuEntry ("Normal Cylinder", 504); glutAddMenuEntry ("Vertex Sphere", 505); glutAddMenuEntry ("Normal Sphere", 506); glutAddMenuEntry ("--------------", 9999); glutAddMenuEntry ("Model Vertex Flat", 507); glutAddMenuEntry ("Model Normal Flat", 508); glutAddMenuEntry ("Model Vertex Cylinder", 509); glutAddMenuEntry ("Model Normal Cylinder", 510); glutAddMenuEntry ("Model Vertex Sphere", 511); glutAddMenuEntry ("Model Normal Sphere", 512); glutAddMenuEntry ("--------------", 9999); glutAddMenuEntry ("Check Texture", 701); glutAddMenuEntry ("Barberpole Texture", 702); glutAddMenuEntry ("Wild Tooth Texture", 703); glutAddMenuEntry ("Molten Lava Texture", 704); glutAddMenuEntry ("--------------", 9999); glutAddMenuEntry ("Exit", 99); glutAttachMenu (GLUT_MIDDLE_BUTTON); /* initialize GL */ glClearDepth (1.0); glEnable (GL_DEPTH_TEST); glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); glMatrixMode (GL_PROJECTION); /* roughly, measured in centimeters */ glFrustum (-9.0, 9.0, -9.0, 9.0, 50.0, 150.0); glMatrixMode(GL_MODELVIEW); /* initialize lighting */ glLightfv (GL_LIGHT0, GL_POSITION, lightOnePosition); glLightfv (GL_LIGHT0, GL_DIFFUSE, lightOneColor); glEnable (GL_LIGHT0); glLightfv (GL_LIGHT1, GL_POSITION, lightTwoPosition); glLightfv (GL_LIGHT1, GL_DIFFUSE, lightTwoColor); glEnable (GL_LIGHT1); glEnable (GL_LIGHTING); glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); glEnable (GL_COLOR_MATERIAL); glColor3f (0.8, 0.3, 0.6); /* initialize and enable texturing */ setup_textures (); gluBuild2DMipmaps (GL_TEXTURE_2D, 3, current_texture -> size, current_texture -> size, GL_RGB, GL_UNSIGNED_BYTE, (void *) (current_texture->pixmap)); glMatrixMode (GL_TEXTURE); glLoadIdentity (); glScalef (1.0, 0.1, 1.0); glMatrixMode (GL_MODELVIEW); glEnable (GL_TEXTURE_2D); /* some stuff to play with .... glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); glEnable (GL_TEXTURE_GEN_S); glEnable (GL_TEXTURE_GEN_T); */ gleTextureMode (GLE_TEXTURE_ENABLE | GLE_TEXTURE_VERTEX_CYL); InitStuff (); glutMainLoop (); return 0; /* ANSI C requires main to return int. */ }