• Domingo 22 de Diciembre de 2024, 22:15

Autor Tema:  Transparencia  (Leído 2053 veces)

Perla_kiko

  • Miembro MUY activo
  • ***
  • Mensajes: 114
    • Ver Perfil
Transparencia
« en: Lunes 11 de Julio de 2005, 13:17 »
0
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

visualcubb

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Transparencia
« Respuesta #1 en: Lunes 11 de Julio de 2005, 17:59 »
0
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


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.
"Y conocereis la verdad y la verdad os hará libres" juan 8:32



http]
[url=http://www.openglubb.info]http]

Perla_kiko

  • Miembro MUY activo
  • ***
  • Mensajes: 114
    • Ver Perfil
Re: Transparencia
« Respuesta #2 en: Miércoles 13 de Julio de 2005, 13:32 »
0
gracias!