Beispiel #1
0
void cambiaColorPin(int i)
{
    int x = 0.0;
    int y = 0.0;
    glPushMatrix();
    glEnable(GL_BLEND); // Activamos la transparencia
    glBlendFunc(GL_SRC_ALPHA, GL_SRC_COLOR); //funcion de blending //GL_ONE_MINUS_SRC_ALPHA GL_SRC_COLOR
    glEnable(GL_TEXTURE_2D);
    //glBindTexture(GL_TEXTURE_2D, texName[12]); //3
    glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);
    glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glBindTexture(GL_TEXTURE_2D, texName[3]); //3
    glPushMatrix();
    
//    switch (currentIndex) {
//        case 1: //America
//            //posiciones de los pines
//            x = continente -> _america[i].posX;
//            cout << "La x es: "<< continente -> _america[i].posX << "\n";
//            y = continente -> _america[i].posY;
//            cout << "La y es: "<< continente -> _america[i].posY << "\n";
//            break;
//        case 2: //Asia
//            //posiciones de los pines
//            posX = continente -> _asia[i].posX;
//            posY = continente -> _asia[i].posY;
//            break;
//        case 3: //Europa
//            posX = continente -> _europa[i].posX;
//            posY = continente -> _europa[i].posY;
//            break;
//        case 0: //Africa
//            posX = continente -> _africa[i].posX;
//            posY = continente -> _africa[i].posY;
//            break;
//        default:
//            break;
//    }
    
    cout << "La x es: "<< continente -> _america[5].posX << "\n";
    cout << "La y es: "<< continente -> _america[5].posY << "\n";
    
    //glTranslatef(continente -> _america[5].posX, continente -> _america[5].posY, 0);
    //glColor3f(0.0f, 0.0f, 0.0f);
    glColor4f(1.0, 1.0, 1.0, 0.1); //color y alpha del cubo
    glutSolidSphere(.1, 20, 20);
    
    glPopMatrix();
    
    glPopMatrix();
    glDisable(GL_BLEND); //para desactivarlo.
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_TEXTURE_GEN_S);
    glDisable(GL_TEXTURE_GEN_T);

    glutPostRedisplay();

}
Beispiel #2
0
int InitGL(GLvoid)										// All Setup For OpenGL Goes Here
{
	if (!LoadGLTextures())								// If Loading The Textures Failed
	{
		return FALSE;									// Return False
	}
	glShadeModel(GL_SMOOTH);							// Enable Smooth Shading
	glClearColor(0.2f, 0.5f, 1.0f, 1.0f);				// Background
	glClearDepth(1.0f);									// Depth Buffer Setup
	glClearStencil(0);									// Clear The Stencil Buffer To 0
	glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
	glDepthFunc(GL_LEQUAL);								// The Type Of Depth Testing To Do
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// Really Nice Perspective Calculations
	glEnable(GL_TEXTURE_2D);							// Enable 2D Texture Mapping

	glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmb);			// Set The Ambient Lighting For Light0
	glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDif);			// Set The Diffuse Lighting For Light0
	glLightfv(GL_LIGHT0, GL_POSITION, LightPos);		// Set The Position For Light0

	glEnable(GL_LIGHT0);								// Enable Light 0
	glEnable(GL_LIGHTING);								// Enable Lighting

	q = gluNewQuadric();								// Create A New Quadratic
	gluQuadricNormals(q, GL_SMOOTH);					// Generate Smooth Normals For The Quad
	gluQuadricTexture(q, GL_TRUE);						// Enable Texture Coords For The Quad

	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);	// Set Up Sphere Mapping
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);	// Set Up Sphere Mapping

	return TRUE;										// Initialization Went OK
}
Beispiel #3
0
/*--    -------------------------------------------------------------------*/
void Texture::aplica( void  )
{
   glPushAttrib( GL_TEXTURE_BIT ) ;
   if( material )
      material->aplica( ) ;

   if( !criada )
   {
      cria() ;
      criada = true ;
   }

   glEnable( GL_TEXTURE_2D ) ;
   glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, (float)modo ) ;
   glBindTexture( GL_TEXTURE_2D, id ) ; 

   if( coord_automatica )
   {
      glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, modo_geracao_s ) ;
      glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, modo_geracao_t ) ;
      glTexGenfv( GL_S, plano_s, vetor_s ) ;
      glTexGenfv( GL_T, plano_t, vetor_t ) ;
      glEnable( GL_TEXTURE_GEN_S );
      glEnable( GL_TEXTURE_GEN_T );
   }
   else
   {
      glEnableClientState( GL_TEXTURE_COORD_ARRAY ) ;
      glTexCoordPointer( 2,  GL_FLOAT, 2*sizeof(GLfloat), coordenadas ) ; 
   }   
}
Beispiel #4
0
int		main (int narg, char ** args)
{
  unsigned char total_texture[4 * 256 * 256];
  unsigned char alpha_texture[256 * 256];
  unsigned char caustic_texture[3 * 256 * 256];
  unsigned int i;

  InitNoise ();

  /* Creation of the window */
  glutInit (&narg, args);
  glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
  glutInitWindowSize (500, 500);
  glutCreateWindow ("Water");

  /* OpenGL settings */
  glClearColor (0, 0, 0, 0);
  glEnable (GL_DEPTH_TEST);
  glEnable (GL_BLEND);
  glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

  /* Texture loading  */
  glGenTextures (1, &texture);
  if (load_texture ("alpha.jpg", alpha_texture, GL_ALPHA, 256) != 0 ||
      load_texture ("reflection.jpg", caustic_texture, GL_RGB, 256) != 0)
    return 1;
  for (i = 0; i < 256 * 256; i++)
    {
      total_texture[4 * i] = caustic_texture[3 * i];
      total_texture[4 * i + 1] = caustic_texture[3 * i + 1];
      total_texture[4 * i + 2] = caustic_texture[3 * i + 2];
      total_texture[4 * i + 3] = alpha_texture[i];
    }
  glBindTexture (GL_TEXTURE_2D, texture);
  gluBuild2DMipmaps (GL_TEXTURE_2D, GL_RGBA, 256, 256, GL_RGBA,
		     GL_UNSIGNED_BYTE,  total_texture);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
  glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
  glEnable (GL_TEXTURE_GEN_S);
  glEnable (GL_TEXTURE_GEN_T);
  glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
  glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

  /* Declaration of the callbacks */
  glutDisplayFunc (&DisplayFunc);
  glutReshapeFunc (&ReshapeFunc);
  glutKeyboardFunc (&KeyboardFunc);
  glutMouseFunc (&MouseFunc);
  glutMotionFunc (&MotionFunc);

  /* Loop */
  glutMainLoop ();

  /* Never reached */
  return 0;
}
void TextureMain::loadLightMapTexture(Model_IMG* model, string file) {

    GLfloat eyePlaneS[] =  {1.0f, 0.0f, 0.0f, 0.0f};
    GLfloat eyePlaneT[] =  {0.0f, 1.0f, 0.0f, 0.0f};
    GLfloat eyePlaneR[] =  {0.0f, 0.0f, 1.0f, 0.0f};
    GLfloat eyePlaneQ[] =  {0.0f, 0.0f, 0.0f, 1.0f};
    GLfloat borderColor[] = {1.f, 1.f, 1.f, 1.0f};

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
    glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);

    glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
    glTexGenfv(GL_S,GL_EYE_PLANE,eyePlaneS);
    glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
    glTexGenfv(GL_T,GL_EYE_PLANE,eyePlaneT);
    glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
    glTexGenfv(GL_R,GL_EYE_PLANE,eyePlaneR);
    glTexGeni(GL_Q,GL_TEXTURE_GEN_MODE,GL_EYE_LINEAR);
    glTexGenfv(GL_Q,GL_EYE_PLANE,eyePlaneQ);

    glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);
    glEnable(GL_TEXTURE_GEN_R);
    glEnable(GL_TEXTURE_GEN_Q);

    model->Load(file);

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0x812D);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 0x812D);
    glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_BORDER_COLOR,borderColor);
    gluBuild2DMipmaps(GL_TEXTURE_2D,GL_RGB,model->Width,model->Height,GL_RGB,GL_UNSIGNED_BYTE,model->Pixels);
}
void Balloon::initBalloon(float terrainHeight)
{
    position = VECTOR3D(0.0f, terrainHeight+10.0, 0.0f);

    GLfloat planes[] = {0.0, 0.0, 0.3, 0.0};
    GLfloat planet[] = {0.0, 0.3, 0.0, 0.0};

    // Setup Texture Mapping
    balloon_pix[0].readBMPFile("textures/balloon_top.bmp");
    balloon_pix[1].readBMPFile("textures/balloon_rope.bmp");
    balloon_pix[2].readBMPFile("textures/balloon_basket.bmp");

    glGenTextures(3, balloon_tex);

    // Texture Properties
    for(int i = 0; i < 3; ++i)
    {
        glBindTexture(GL_TEXTURE_2D, balloon_tex[i]);
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
        glTexGenfv(GL_S, GL_OBJECT_PLANE, planes);
        glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
        glTexGenfv(GL_T, GL_OBJECT_PLANE, planet);
        glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, balloon_pix[i].nCols, balloon_pix[i].nRows, 0, GL_RGB, GL_UNSIGNED_BYTE, balloon_pix[i].pixel);
    }
}
Beispiel #7
0
/*ARGSUSED1*/
void
key(unsigned char key, int x, int y) {
    static int wire;
    switch(key)
    {
    case 'o':
	/* toggle object type */
	object++;
	if(object > maxobject)
	    object = 1;
	glutPostRedisplay();
	break;
    case 'w':
	if (wire ^= 1)
	    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
	else
	    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
	glutPostRedisplay();
	break;
    case 's':
	glDisable(GL_LIGHTING);
	glBindTexture(GL_TEXTURE_2D, 1);
	glEnable(GL_TEXTURE_2D);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
	glutPostRedisplay();
	break;
    case 'n':
	glEnable(GL_LIGHTING);
	glDisable(GL_TEXTURE_2D);
	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);
	glutPostRedisplay();
	break;
    case 'c':
	glBindTexture(GL_TEXTURE_2D, 2);
	glDisable(GL_LIGHTING);
	glEnable(GL_TEXTURE_2D);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
#if 0
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
#else
	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);
#endif
	glutPostRedisplay();
	break;
    case '\033':
	exit(0);
	break;
    default:
	help();
	break;
    }

}
Beispiel #8
0
void GLSLShaderMaterial::SetupShadowMap( int lightNum, GLuint texID, float *matrix )
{
	char mapName[32];
	GLenum texUnit = GL_TEXTURE7-lightNum;
	sprintf( mapName, "shadowMap%d", lightNum );  // 7 = shadowMap0, 6 = shadowMap1, 5 = shadowMap2
	shader->BindAndEnableTexture( mapName, texID, texUnit, GL_TEXTURE_2D );
	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE );
	//shader->SetParameterv( "epS", 4, &matrix[0] );
	//shader->SetParameterv( "epT", 4, &matrix[4] );
	//shader->SetParameterv( "epR", 4, &matrix[8] );
	//shader->SetParameterv( "epQ", 4, &matrix[12] );
	glPushMatrix();
	glLoadIdentity();
	glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGenfv( GL_S, GL_EYE_PLANE, &matrix[0] );
	glTexGenfv( GL_T, GL_EYE_PLANE, &matrix[4] );
	glTexGenfv( GL_R, GL_EYE_PLANE, &matrix[8] );
	glTexGenfv( GL_Q, GL_EYE_PLANE, &matrix[12] );
	glEnable( GL_TEXTURE_GEN_S );
	glEnable( GL_TEXTURE_GEN_T );
	glEnable( GL_TEXTURE_GEN_R );
	glEnable( GL_TEXTURE_GEN_Q );
	glPopMatrix();
	shader->SetParameter( "useShadowMap", 1 );
}
Beispiel #9
0
void Environment::enableEvironmentMapping(GLfloat* reflectivity,
                                          unsigned int textureUnitOffset)
{
  if(!GLEW_VERSION_1_3)
    return;
  glActiveTexture(GL_TEXTURE0 + ++textureUnitOffset);
  setInvMVMatrixAsTextureMatrix();
  glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, reflectivity);
  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
  glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
  glTexEnvf(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
  glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
  glTexEnvf(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PREVIOUS);
  glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
  glTexEnvf(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_CONSTANT);
  glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA);
  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, cubeMapGenMode);
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, cubeMapGenMode);
  glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, cubeMapGenMode);
  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);
  glEnable(GL_TEXTURE_GEN_R);
  glEnable(GL_TEXTURE_CUBE_MAP);
  glActiveTexture(GL_TEXTURE0 + --textureUnitOffset);
}
void opengl_texture_state::init(GLuint n_units)
{
	Assert( n_units > 0 );
	units = (opengl_texture_unit*) vm_malloc(n_units * sizeof(opengl_texture_unit));
	num_texture_units = n_units;

	for (unsigned int unit = 0; unit < num_texture_units; unit++) {
		units[unit].active = GL_FALSE;
		units[unit].enabled = GL_FALSE;
		units[unit].used = GL_FALSE;

		default_values(unit);

		glActiveTexture(GL_TEXTURE0 + unit);
		if (unit < (GLuint)GL_supported_texture_units) {
			glDisable(GL_TEXTURE_GEN_S);
			glDisable(GL_TEXTURE_GEN_T);
			glDisable(GL_TEXTURE_GEN_R);
			glDisable(GL_TEXTURE_GEN_Q);
		}

		units[unit].texgen_S = GL_FALSE;
		units[unit].texgen_T = GL_FALSE;
		units[unit].texgen_R = GL_FALSE;
		units[unit].texgen_Q = GL_FALSE;

		if (unit < (GLuint)GL_supported_texture_units) {
			glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
			glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
			glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
			glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
		}

		units[unit].texgen_mode_S = GL_EYE_LINEAR;
		units[unit].texgen_mode_T = GL_EYE_LINEAR;
		units[unit].texgen_mode_R = GL_EYE_LINEAR;
		units[unit].texgen_mode_Q = GL_EYE_LINEAR;

		if (unit < (GLuint)GL_supported_texture_units) {
			glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
			glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
			glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE);
		}

		units[unit].env_mode = GL_MODULATE;
		units[unit].env_combine_rgb = GL_MODULATE;
		units[unit].env_combine_alpha = GL_MODULATE;

		if (unit < (GLuint)GL_supported_texture_units) {
			glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 1.0f);
			glTexEnvf(GL_TEXTURE_ENV, GL_ALPHA_SCALE, 1.0f);
		}

		units[unit].rgb_scale = 1.0f;
		units[unit].alpha_scale = 1.0f;
	}

	DisableAll();
}
Beispiel #11
0
void c_textura_2D::activa_ST( void ) {
  glTexGeni(  GL_S, GL_TEXTURE_GEN_MODE, Modo_ST );
  glTexGeni(  GL_T, GL_TEXTURE_GEN_MODE, Modo_ST );
  glTexGenfv( GL_S, GL_OBJECT_PLANE, Plano_S );
  glTexGenfv( GL_T, GL_OBJECT_PLANE, Plano_T );
  glEnable( GL_TEXTURE_GEN_S );
  glEnable( GL_TEXTURE_GEN_T );
}
Beispiel #12
0
 Torus::Torus(string id, float inner, float outer, int slices, int loops) : Primitive(id) {
     this->inner = inner;
     this->outer = outer;
     this->slices = slices;
     this->loops = loops;
     glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
     glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
 }
Beispiel #13
0
void glInit() {

   /* Init glut */
   glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
   glutInitWindowSize (500, 500); 
   glutInitWindowPosition (100, 100);
   glutCreateWindow ("Trick Cannon");

   /* Textures */
   texture_dirt = LoadBitmap("images/dirt.bmp");
   texture_mars = LoadBitmap("images/MarsMap.bmp");
   texture_granite = LoadBitmap("images/granite.bmp");

   /* Quadric for ball */
   q_ball = gluNewQuadric();

   //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
   glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); 
   glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);    
   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

   // Here is the light/shading init
   light_position[0] = 4.0 ;
   light_position[1] = 0.0 ;
   light_position[2] = 0.0 ;
   light_position[3] = 1.0 ;
   GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };

   glClearColor (0.0, 0.0, 0.0, 1.0);
   glShadeModel (GL_SMOOTH);

   glLightfv(GL_LIGHT0, GL_POSITION, light_position);
   glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);

   glEnable(GL_LIGHTING);
   glEnable(GL_LIGHT0);
   glEnable(GL_DEPTH_TEST);

   glDepthFunc(GL_LEQUAL); 
   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

   // Fog
   glEnable(GL_FOG);
   glFogi(GL_FOG_MODE, GL_EXP2) ;
   glFogfv(GL_FOG_COLOR, fog_color);
   glFogf(GL_FOG_DENSITY, 0.005) ;
   glFogf(GL_FOG_START, 10.0);
   glFogf(GL_FOG_END, 10.0);

   // Add specular effect -after- texturing calculations
   glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
                 GL_SEPARATE_SPECULAR_COLOR);

   /* Call backs */
   glutDisplayFunc(display); 
   glutReshapeFunc(reshape);
}
Beispiel #14
0
void	GL_BuildShadowTextureMatrix(camera_t *viewer)
{
	float tmpMatrix[16] = {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};
	float bias[16] = {0.5,0,0,0,0,0.5,0,0,0,0,0.5,0,0.5,0.5,gfx_shadowBias.value,1};
	
	//GL setup
	GL_MatrixMode(GL_TEXTURE);
	
	if(gfx_shadowQuality.integer <= 1) {
		glLoadMatrixf(bias);
		
		glMultMatrixf(lightPerspective[0].matrix);
	
		Cam_ConstructOpenGLMat44(scene_cam, &transM);
			
		M_InvertMatrix44(&transM, &transM);
		glMultMatrixf(transM.matrix);
		
	} else if (gfx_shadowQuality.integer > 1 ) {
		for(int i=0;i<gfx_shadowQuality.integer;i++) {
			GL_SwitchTexUnit(GL_TEXTURE4_ARB+i);
			
			glMatrixMode(GL_TEXTURE); //one can never be too sure
			//our bias
			glLoadMatrixf(bias);
			
			glMultMatrixf(lightPerspective[i].matrix);
			
			Cam_ConstructOpenGLMat44(scene_cam, &transM);
			
			M_InvertMatrix44(&transM, &transM);
			glMultMatrixf(transM.matrix);
		}
	}
	
	GL_MatrixMode(GL_MODELVIEW);
	
	GL_SwitchTexUnit(GL_TEXTURE1_ARB);

	glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL );
	glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE );
	glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE );
	
	//EYE SPACE
	glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGenfv( GL_S, GL_EYE_PLANE, &tmpMatrix[0] );  
	glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGenfv( GL_T, GL_EYE_PLANE, &tmpMatrix[4] );  
	glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGenfv( GL_R, GL_EYE_PLANE, &tmpMatrix[8] );  
	glTexGeni( GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR );
	glTexGenfv( GL_Q, GL_EYE_PLANE, &tmpMatrix[12] );

	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
	glEnable(GL_TEXTURE_GEN_R);
	glEnable(GL_TEXTURE_GEN_Q);
}
Beispiel #15
0
void init(void) {
    int width, height, components;
    GLubyte *image;
    float density, fog_density, far_cull;

    glClearColor (0.0, 0.0, 0.0, 0.0);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);

    if (!(image = (GLubyte *)read_texture("data/sea.rgb", &width, &height, &components))) {
	perror("sea.rgb");
	exit(EXIT_FAILURE);
    }
    glPixelStorei(GL_UNPACK_ALIGNMENT, 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);
    glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0,
		GL_RGBA, GL_UNSIGNED_BYTE, image);

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
    glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
    glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);

    glEnable(GL_TEXTURE_GEN_S);
    glEnable(GL_TEXTURE_GEN_T);
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_CULL_FACE);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_AUTO_NORMAL);
    glEnable(GL_NORMALIZE);
    glFrontFace(GL_CW);
    glCullFace(GL_BACK);
    glMaterialf (GL_FRONT, GL_SHININESS, 64.0);
    { int e; if (e = glGetError()) printf("error %x\n", e); }

    density = 1.- expf(-5.5 * fog_density * fog_density *
		     far_cull * far_cull);
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MIN(a,b) ((a) < (b) ? (a) : (b))
    density = MAX(MIN(density, 1.), 0.);

    glClearColor(.09f,.18f,.18f,1.f);

    glFogi(GL_FOG_MODE, GL_EXP);
    glFogf(GL_FOG_DENSITY, fog_params[0]);
    glFogfv(GL_FOG_COLOR, fog_params+1);
    glEnable(GL_FOG);
    {
    GLfloat pos[] = {0.,150.,1.,1.};
    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    }
}
Beispiel #16
0
void LLDrawPoolTerrain::renderSimple()
{
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_NORMAL_ARRAY);

	LLVector4 tp0, tp1;

	//----------------------------------------------------------------------------
	// Pass 1/1

	// Stage 0: Base terrain texture pass
	mTexturep->addTextureStats(1024.f*1024.f);
	mTexturep->bind(0);

	glActiveTextureARB(GL_TEXTURE0_ARB);
	glEnable(GL_TEXTURE_2D); // Texture unit 2
	glClientActiveTextureARB(GL_TEXTURE0_ARB);

	LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent();
	F32 tscale = 1.f/256.f;
	tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f));
	tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f));
	
	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
	glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
	glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
	
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,		GL_COMBINE_ARB);
	glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB,		GL_MODULATE);

	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB,		GL_TEXTURE);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB,		GL_SRC_COLOR);
	glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB,		GL_PRIMARY_COLOR_ARB);
	glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB,		GL_SRC_COLOR);

	drawLoop();

	//----------------------------------------------------------------------------
	// Restore Texture Unit 0 defaults
	
	LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
	glClientActiveTextureARB(GL_TEXTURE0_ARB);
	glActiveTextureARB(GL_TEXTURE0_ARB);
	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);
	glMatrixMode(GL_TEXTURE);
	glLoadIdentity();
	glMatrixMode(GL_MODELVIEW);

	// Restore non Texture Unit specific defaults
	glDisableClientState(GL_NORMAL_ARRAY);
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
}
Beispiel #17
0
void CPlyRender::InitCubeMapping(void)
{
	GLenum target[]={
		GL_TEXTURE_CUBE_MAP_POSITIVE_X,
		GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
		GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
		GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
		GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
		GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
	};
	stringstream filename;



	glGenTextures(1,  &mTexId[CUBEMAP]);
	glBindTexture(GL_TEXTURE_CUBE_MAP, mTexId[CUBEMAP]);
	for(int i=0;i<6;i++){
		filename.str("");
		filename << "../data/cubemap/" << CUBENAME << "/" << CUBEMAP_IMAGE_NAMES[i] << ".jpg";
		cv::Mat img = cv::imread(filename.str().c_str());
		cv::flip(img, img, 0);
		if (img.data == nullptr) { 
			tr2::sys::path mypath;
			cout << "current directory:" << tr2::sys::current_path().string() << endl;
			cout << "tried to open file:" << filename.str() << endl;
			assert(!"cubemap image not found");
		}

		
		glTexImage2D ( target[i], 0, GL_RGB, img.size().width,img.size().height, 0, GL_RGB, GL_UNSIGNED_BYTE, img.data);
	}
	/*  glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
        glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
        glfwFreeImage(&img);
        return true;
    }*/
	// テクスチャを拡大・縮小する方法の指定 
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	
	// テクスチャの繰り返し方法の指定 
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_REPEAT);
	// キューブマッピング用のテクスチャ座標を生成する 
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);
	glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);

	/* 設定対象を無名テクスチャに戻す */
	glBindTexture(GL_TEXTURE_2D, 0);
	GetGLError("teximage2d");

}
Beispiel #18
0
void
smapRenderSphereMappedObj(SphereMap *smap)
{
        glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, smap->smapTexObj);
}
Beispiel #19
0
void enable_reflection_str(void)
{
  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
  glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_NV);
        
  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);
  glEnable(GL_TEXTURE_GEN_R);
}
Beispiel #20
0
		inline void Texture2::enableSphereMapping(void)
		{
			glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
			glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

			glEnable(GL_TEXTURE_GEN_S);
			glEnable(GL_TEXTURE_GEN_T);

			glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
		}
Beispiel #21
0
void InitAutoTex()
{

   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);
}
void CubeMap::enableFixedMapping()
{
	glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP );
	glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP );
	glTexGeni( GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP );
	glEnable(GL_TEXTURE_GEN_S);
	glEnable(GL_TEXTURE_GEN_T);
	glEnable(GL_TEXTURE_GEN_R);
	glEnable( GL_TEXTURE_CUBE_MAP );
}
Beispiel #23
0
void redraw_water() {
  // test code for water ripples

  int w,h;
  // note: intead of loading each time, just switch back and forth
  // using the texture integer lols
  loadTexture(std::string("data/sky.png"), w,h);

  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);

  // apply UI transformation
  glPushMatrix();
  ui->applyViewingTransformation();
  glTranslatef(0, -2.5, -5);
  glTranslatef(ui->final_tx, -1*ui->final_ty, ui->final_tz);
  glRotatef(ui->final_rd, ui->final_rx,ui->final_ry,0);
 
  Matrix<float,3,1> N1,N2;
  Matrix<float,3,1> N3,N4;

  float prev_y = ymin;

  // loop to make plane out of triangle strips
  // this is very inefficient, don't use immediate mode after debug...
  for(float y=ymin; y<ymax; y+=dy) {
    glBegin(GL_TRIANGLE_STRIP);
    for(float x=xmin; x<xmax; x+=dx) {
      // calculate ripply normals
      N1[0] = 2.*x*sin(x*x + y*y - water_time);
      N1[1] = 2.*y*sin(x*x + y*y - water_time);
      N1[2] = 1;
      N1 = N1.normalize();
      N2[0] = 2.*x*sin(x*x + prev_y*prev_y - water_time);
      N2[1] = 2.*prev_y*sin(x*x + prev_y*prev_y - water_time);
      N2[2] = 1;
      N2 = N2.normalize();

      // set vertices and texcoords
      glNormal3f(N1[0], N1[1], N1[2]); glVertex3f(y, 0, x);
      glNormal3f(N2[0], N2[1], N2[2]); glVertex3f(prev_y, 0, x);
    }
    glEnd();
    prev_y = y; // could just subtract dy...
  }
  
  glDisable(GL_TEXTURE_GEN_S);
  glDisable(GL_TEXTURE_GEN_T);

  glPopMatrix();
  glutSwapBuffers();
  
}
Beispiel #24
0
// Draw calls
void DrawBall(GLboolean isProjection)
{
	glColor3f(1, 1, 1);
	glPushMatrix();	
		if (!isProjection)
		{
			glBindTexture(GL_TEXTURE_2D, otherTextures[BALL]);
			glEnable(GL_TEXTURE_GEN_S);		
			glEnable(GL_TEXTURE_GEN_T);		
			glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
			glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);	
		}

		run ? glTranslatef(X, Y, Z) 
			: glTranslatef(reflectorX, reflectorY, ROOM_HALF_LENGTH - BALL_DIAMETER);
		glutSolidSphere(BALL_DIAMETER / 2.0, 10.0, 10.0);

		if (!isProjection)
		{
			glDisable(GL_TEXTURE_GEN_S);		
			glDisable(GL_TEXTURE_GEN_T);
		}
	glPopMatrix();	

	if (!isProjection)
	{
		if (run)
		{
			X += Xdir;
			Y += Ydir;
			Z += Zdir;

			leftCP  += Xdir;
			rightCP += Xdir;
			upCP    += Ydir;
			downCP  += Ydir;
			backCP  += Zdir;
			frontCP += Zdir;
		}
		else
		{
			X = reflectorX;
			Y = reflectorY;
			Z = ROOM_HALF_LENGTH - BALL_DIAMETER;

			leftCP  = X - BALL_DIAMETER / 2.0;
			rightCP = X + BALL_DIAMETER / 2.0;
			downCP	= Y - BALL_DIAMETER / 2.0;
			upCP    = Y + BALL_DIAMETER / 2.0;
			backCP  = Z - BALL_DIAMETER / 2.0;
			frontCP = Z + BALL_DIAMETER / 2.0;
		}
	}
}
Beispiel #25
0
/* general OpenGL initialization function */
int initGL()
{

    /* Load in the texture */
    if ( !LoadGLTextures( ) )
	return FALSE;

    /* Enable Texture Mapping ( NEW ) */
    glEnable( GL_TEXTURE_2D );

    /* Enable smooth shading */
    glShadeModel( GL_SMOOTH );

    /* Set the background black */
    glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );

    /* Depth buffer setup */
    glClearDepth( 1.0f );

    /* Enables Depth Testing */
    glEnable( GL_DEPTH_TEST );

    /* The Type Of Depth Test To Do */
    glDepthFunc( GL_LEQUAL );

    /* Really Nice Perspective Calculations */
    glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

    /* Setup The Ambient Light */
    glLightfv( GL_LIGHT1, GL_AMBIENT, LightAmbient );

    /* Setup The Diffuse Light */
    glLightfv( GL_LIGHT1, GL_DIFFUSE, LightDiffuse );

    /* Position The Light */
    glLightfv( GL_LIGHT1, GL_POSITION, LightPosition );

    /* Enable Light One */
    glEnable( GL_LIGHT1 );

    /* Set The Texture Generation Mode For S To Sphere Mapping */
    glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    /* Set The Texture Generation Mode For T To Sphere Mapping */
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

    /* Create A Pointer To The Quadric Object */
    quadratic = gluNewQuadric( );
    /* Create Smooth Normals */
    gluQuadricNormals( quadratic, GLU_SMOOTH );
    /* Create Texture Coords */
    gluQuadricTexture( quadratic, GL_TRUE );

    return( TRUE );
}
Beispiel #26
0
void Sphere::initQuad(bool inside){
  _quad = gluNewQuadric();
  gluQuadricTexture(_quad, GL_TRUE);
  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);			// Set Up Sphere Mapping
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);

  //gluQuadricDrawStyle(_quad,GLU_POINT);

  if(inside)gluQuadricOrientation(_quad,GLU_INSIDE);
  else gluQuadricOrientation(_quad,GLU_OUTSIDE);
}
Beispiel #27
0
////////////////////////////////////////////////////////
// render
//
/////////////////////////////////////////////////////////
void pix_cubemap :: render(GemState *state) {
  m_didTexture=false;
  pushTexCoords(state);

  if(!m_textureOnOff)return;

  /* here comes the work: a new image has to be transfered from main memory to GPU and attached to a texture object */
  if(state) {
    pixBlock*img=NULL;
    state->get(GemState::_PIX, img);
    if(img) {
      if(img->newimage)
        m_img[0]=&img->image;
    }
  }


  if(GLEW_VERSION_1_3) {
    glActiveTexture(GL_TEXTURE0_ARB + m_texunit);
  }
  glEnable(m_textureType);
  glBindTexture(m_textureType, m_textureObj);

  int i=0;
  for(i=0; i<6; i++) {
    applyTex(GL_TEXTURE_CUBE_MAP_POSITIVE_X+i, m_img[i]);
    m_img[i]=NULL;
    }

  int mode = GL_NORMAL_MAP;
  switch(m_map) {
  case 0: mode = GL_NORMAL_MAP; break;
  case 1: mode = GL_REFLECTION_MAP; break;
  case 2: mode = GL_SPHERE_MAP; break;
  default: mode=m_map;
  }


  glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, mode);
  glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, mode);
  glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, mode);
  glEnable(GL_TEXTURE_GEN_S);
  glEnable(GL_TEXTURE_GEN_T);
  glEnable(GL_TEXTURE_GEN_R);

  /* cleanup */
  m_rebuildList = 0;
  m_didTexture=true;

  state->set(GemState::_GL_TEX_UNITS, m_numTexUnits);
  state->set(GemState::_GL_TEX_TYPE, 0); // ?

  //  sendExtTexture(m_textureObj, m_xRatio, m_yRatio, m_textureType, upsidedown);
}
Beispiel #28
0
void desplieganuevopin(int i)
{
    
    if (pinSelecc < 100 ) {
        glPushMatrix();
        glEnable(GL_BLEND); // Activamos la transparencia
        glBlendFunc(GL_ONE_MINUS_SRC_COLOR, GL_SRC_COLOR); //funcion de blending //GL_ONE_MINUS_SRC_ALPHA GL_SRC_COLOR
        glEnable(GL_TEXTURE_2D);
        glEnable(GL_TEXTURE_GEN_S);
        glEnable(GL_TEXTURE_GEN_T);
        glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
        glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
        glBindTexture(GL_TEXTURE_2D, texName[3]); //pin rojo
        glPushMatrix();
            switch (currentIndex) {
                case 1: //America
                    //posiciones de los pines
                    posX = continente -> _america[i].posX;
                    posY = continente -> _america[i].posY;
                    break;
                case 2: //Asia
                    //posiciones de los pines
                    posX = continente -> _asia[i].posX;
                    posY = continente -> _asia[i].posY;
                    break;
                case 3: //Europa
                    posX = continente -> _europa[i].posX;
                    posY = continente -> _europa[i].posY;
                    break;
                case 0: //Africa
                    posX = continente -> _africa[i].posX;
                    posY = continente -> _africa[i].posY;
                    break;
                default:
                    break;
            }
        
        glTranslatef(posX, posY, 0);
        glColor4f(1.0, 1.0, 1.0, 0.1); //color y alpha del cubo
        glutSolidSphere(.05, 20, 20);
        glPopMatrix();
        glPopMatrix();
        glDisable(GL_BLEND); //para desactivarlo.
        glDisable(GL_TEXTURE_2D);
        glDisable(GL_TEXTURE_GEN_S);
        glDisable(GL_TEXTURE_GEN_T);
        
        glutPostRedisplay();
    }
    

    
    
}
void LLDrawPoolTerrain::renderSimple()
{
	LLVector4 tp0, tp1;

	//----------------------------------------------------------------------------
	// Pass 1/1

	// Stage 0: Base terrain texture pass
	mTexturep->addTextureStats(1024.f*1024.f);

	gGL.getTexUnit(0)->activate();
	gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
	gGL.getTexUnit(0)->bind(mTexturep);
	
	LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent();
	F32 tscale = 1.f/256.f;
	tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f));
	tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f));
	
	if (LLGLSLShader::sNoFixedFunction)
	{
		sShader->uniform4fv("object_plane_s", 1, tp0.mV);
		sShader->uniform4fv("object_plane_t", 1, tp1.mV);
	}
	else
	{
		glEnable(GL_TEXTURE_GEN_S);
		glEnable(GL_TEXTURE_GEN_T);
		glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
		glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
		glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
		glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
	}

	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);

	drawLoop();

	//----------------------------------------------------------------------------
	// Restore Texture Unit 0 defaults
	
	gGL.getTexUnit(0)->activate();
	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
	if (!LLGLSLShader::sNoFixedFunction)
	{
		glDisable(GL_TEXTURE_GEN_S);
		glDisable(GL_TEXTURE_GEN_T);
	}
	gGL.matrixMode(LLRender::MM_TEXTURE);
	gGL.loadIdentity();
	gGL.matrixMode(LLRender::MM_MODELVIEW);
	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
static void cd_animation_render_capsule (Icon *pIcon, CairoDock *pDock, gboolean bInvisibleBackground)
{
	glEnable(GL_DEPTH_TEST);
	glEnable (GL_BLEND);
	/*if (bInvisibleBackground)
		_cairo_dock_set_blend_alpha ();  // to have a transparency capsule.
	else
		glBlendFunc (GL_SRC_ALPHA, GL_ONE);  // the capsule "erase" the background.*/
	glEnable(GL_TEXTURE);
	_cairo_dock_set_blend_alpha ();
	
	glActiveTexture(GL_TEXTURE0); // Active multitexturing for the 1st time
	glEnable(GL_TEXTURE_2D); // Enable texturing for this time
	glBindTexture(GL_TEXTURE_2D, myData.iChromeTexture);
	glEnable(GL_TEXTURE_GEN_S);                                // yes, we want a S generation
	glEnable(GL_TEXTURE_GEN_T);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); // generation's type of coordinates for the texture
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);  // for textures that are too large
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	
	glActiveTexture(GL_TEXTURE1); // Active multitexturing for the 2d time
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, pIcon->image.iTexture);
	//glColor4f(1., 1., 1., pIcon->fAlpha);
	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); // we want a classical mapping
	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);  // for textures that are too large
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
	glTexGenfv(GL_S, GL_OBJECT_PLANE, fCapsuleObjectPlaneS); // we move the texture
	glTexGenfv(GL_T, GL_OBJECT_PLANE, fCapsuleObjectPlaneT);
	glEnable(GL_TEXTURE_GEN_S);                                // texture's generation in S
	glEnable(GL_TEXTURE_GEN_T);        // and T
	glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT); // combination's mode of the textures
	glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_ADD);  /// it saturates ...
	//glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE);
	//glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 1.3);  // boost the combination
	
	glPolygonMode (GL_FRONT, GL_FILL);
	glCallList (myData.iCallList[CD_CAPSULE_MESH]);
	
	glActiveTexture(GL_TEXTURE1);
	glDisable(GL_TEXTURE_2D);
	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);
	glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE, 1.);
	glActiveTexture(GL_TEXTURE0);
	glDisable(GL_TEXTURE_2D);
	glDisable(GL_TEXTURE_GEN_S);
	glDisable(GL_TEXTURE_GEN_T);
	glDisable (GL_DEPTH_TEST);
	glDisable (GL_BLEND);
}