//------------------------------------------------------------ void inicializa() { // GLUT glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);// pide color RGB y double buffering glutInitWindowSize(w,h); glutInitWindowPosition(10,10); glutCreateWindow("TP N°3 - Nahuel Lattessi"); // crea el main window // declara los callbacks, los que (aun) no se usan (aun) no se declaran glutDisplayFunc(Display_cb); glutReshapeFunc(Reshape_cb); //glutKeyboardFunc(Keyboard_cb); //glutSpecialFunc(Special_cb); teclado.Iniciar(); glutIdleFunc(Idle_cb); // OpenGL //glClearColor(0.01f,0.01f,0.01f,1.f); // color de fondo // Activo el zbuffer glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glDepthRange(0.0, 1.0); glClearDepth(1.0); // Inicializo texturas glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(5,texid); // Textura1 = 1D // Stripe makeStripeImage(); glBindTexture(GL_TEXTURE_1D, texid[0]); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_DECAL); glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, stripeImageWidth, 0, GL_RGBA, GL_UNSIGNED_BYTE, stripeImage); // Textura2 = 2D // Check makeCheckImage(); glBindTexture(GL_TEXTURE_2D, texid[1]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth,checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, otherImage); // Textura3 = 2D // Pasto glBindTexture(GL_TEXTURE_2D, texid[2]); mipmap_ppm("Assets/grass.ppm"); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); // Textura4 = 2D // Cubo glBindTexture(GL_TEXTURE_2D, texid[3]); mipmap_ppm("Assets/cubo.ppm"); // Textura5 // Spry para el ala glBindTexture(GL_TEXTURE_2D, texid[4]); mipmap_ppm("Assets/Spry.ppm"); // las operaciones subsiguientes se aplican a la matriz de modelado GL_MODELVIEW glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
//------------------------------------------------------------ void inicializa() { // GLUT glutInitDisplayMode(GLUT_RGBA|GLUT_ALPHA|GLUT_DOUBLE|GLUT_DEPTH);// pide color RGB y double buffering glutInitWindowSize(w,h); glutInitWindowPosition(10,10); glutCreateWindow("Ejemplo Avion"); // crea el main window // declara los callbacks, los que (aun) no se usan (aun) no se declaran glutDisplayFunc(Display_cb); glutReshapeFunc(Reshape_cb); glutSpecialFunc(Special_cb); glutIdleFunc(Idle_cb); //Idle teclado.Iniciar(); // OpenGL //Z-Buffer glEnable(GL_DEPTH_TEST); glDepthFunc( GL_LEQUAL ); glDepthRange(0.0, 1.0); glClearDepth(1.0); glEnable(GL_NORMALIZE); // para que el scaling no moleste glDisable(GL_AUTO_NORMAL); // para nurbs?? glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset (1,1); // coplanaridad glEnable(GL_POINT_SMOOTH); glEnable(GL_LINE_SMOOTH); glEnable(GL_POLYGON_SMOOTH); glHint(GL_POINT_SMOOTH_HINT,GL_NICEST); glHint(GL_LINE_SMOOTH_HINT,GL_NICEST); glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST); glShadeModel(GL_SMOOTH); // transparencias glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //glClearColor(0.23f,0.20f,0.01f,1.f); // color de fondo glClearColor(0.01f,0.01f,0.01f,1.f); // direccion de los poligonos glFrontFace(GL_CCW); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); glCullFace(GL_BACK); // se habilita por objeto (cerrado o abierto) // textura // textura1 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(3,texid); glBindTexture(GL_TEXTURE_2D, texid[0]); mipmap_ppm("cubo.ppm"); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); /* glEnable(GL_TEXTURE_2D); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);*/ //Textura 2 glBindTexture(GL_TEXTURE_2D, texid[1]); mipmap_ppm("grass.ppm"); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glBindTexture(GL_TEXTURE_2D, texid[2]); mipmap_ppm("pista.ppm"); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); // las operaciones subsiguientes se aplican a la matriz de modelado GL_MODELVIEW glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }