SoloCodigo

Programación Específica => Programación de Videojuegos => OpenGL => Mensaje iniciado por: Perla_kiko en Lunes 11 de Julio de 2005, 13:17

Título: Transparencia
Publicado por: Perla_kiko en Lunes 11 de Julio de 2005, 13:17
hola yo creo un cuadrado con el siguiente codigo:
Código: Text
  1.  
  2. glMaterialfv (GL_FRONT, GL_AMBIENT, VMaterialPre[4].Ambiente);
  3. glMaterialfv (GL_FRONT, GL_DIFFUSE, VMaterialPre[4].Difuso);
  4. glMaterialfv (GL_FRONT, GL_SPECULAR, VMaterialPre[4].Specular);
  5. glMaterialf (GL_FRONT, GL_SHININESS, 100.0f);
  6. int cara=80;
  7. glMaterialf (GL_FRONT, GL_SHININESS, 100.0f);
  8. glBegin(GL_QUADS);
  9.  glVertex3f((VVertice[VCaras[cara].A].x/50)-5,(VVertice[VCaras[cara].A].y/50)+5,(VVertice[VCaras[cara].A].z/50)+0.2);
  10.  glVertex3f((VVertice[VCaras[cara].A].x/50)+15, (VVertice[VCaras[cara].A].y/50)+5,(VVertice[VCaras[cara].A].z/50)+0.2);
  11.  glVertex3f((VVertice[VCaras[cara].A].x/50)+15, (VVertice[VCaras[cara].A].y/50)-5,(VVertice[VCaras[cara].A].z/50)+0.2);
  12.  glVertex3f((VVertice[VCaras[cara].A].x/50)-5,(VVertice[VCaras[cara].A].y/50)-5,(VVertice[VCaras[cara].A].z/50)+0.2);
  13. glEnd();
  14.  
  15.  

como puedo hacer que sea semitranparente
Título: Re: Transparencia
Publicado por: visualcubb en Lunes 11 de Julio de 2005, 17:59
Hola colega, lo primero que tienes que hacer para que sea transparente es habilitar la transparencia, eso se hace de la siguiente forma:

Código: Text
  1. glEnable(GL_BLEND);
  2. glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  3.  

Para saber que otros métodos de blending existen puedes revisar esta página:
glBlendFunc (http://pyopengl.sourceforge.net/documentation/manual/glBlendFunc.3G.html)


Después tienes que agregar la función glColor4ub() o glColor4f() en cada llamada a glVertex3f() para indicarle qué nivel del transparencia quieres para cada vértice.
Los 3 primeros parámetros son el nivel RGB y el 4to es el alpha channel que indica la transparencia.

Tienes que tomar en cuenta de que la luz cuando está activa deshabilita la transparencia.

Un ejemplo de tu código con el cubo semi-transparente sería algo así:

Código: Text
  1. glEnable(GL_BLEND);
  2. glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  3.  
  4. glColor4f(1.0,1.0,1.0,0.5f);
  5. glBegin(GL_QUADS);
  6. glVertex3f((VVertice[VCaras[cara].A].x/50)-5,(VVertice[VCaras[cara].A].y/50)+5,(VVertice[VCaras[cara].A].z/50)+0.2);
  7. glVertex3f((VVertice[VCaras[cara].A].x/50)+15, (VVertice[VCaras[cara].A].y/50)+5,(VVertice[VCaras[cara].A].z/50)+0.2);
  8. glVertex3f((VVertice[VCaras[cara].A].x/50)+15, (VVertice[VCaras[cara].A].y/50)-5,(VVertice[VCaras[cara].A].z/50)+0.2);
  9. glVertex3f((VVertice[VCaras[cara].A].x/50)-5,(VVertice[VCaras[cara].A].y/50)-5,(VVertice[VCaras[cara].A].z/50)+0.2);
  10. glEnd();
  11.  

Saludos.
Título: Re: Transparencia
Publicado por: Perla_kiko en Miércoles 13 de Julio de 2005, 13:32
gracias!