示例#1
0
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);
}
示例#2
0
/* 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);
	}
  }

}
示例#3
0
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();
}
示例#4
0
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. */
}