Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Multitextura En Opengl

Iniciado por Sacrifai, 04 de Febrero de 2006, 01:57:47 PM

« anterior - próximo »

Sacrifai

 Estoy comenzando a programar en OpenGL y os planteo esta duda. Tengo dos texturas sobre una misma malla. Opengl me pone la que está por encima algo mas trasparente para que se vea la de abajo. Lo que yo quiero es que lo unico transparente de la textura superior sea un color determinado, y lo otro se vea totalmente solido.
Codigo de que lo hago:
Citar
imagen[1]->Load("rock.tga");

glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glGenTextures(2,textura);
glBindTexture(GL_TEXTURE_2D,textura[0]);

gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB,imagen[1]->GetWidth(),imagen[1]->GetHeight(),
GL_RGB, GL_UNSIGNED_BYTE,imagen[1]->GetImage());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

imagen[1]->Load("opengl_logo.tga");

glActiveTexture(GL_TEXTURE1);

glBindTexture(GL_TEXTURE_2D,textura[1]);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB,imagen[1]->GetWidth(),imagen[1]->GetHeight(),
GL_RGB, GL_UNSIGNED_BYTE,imagen[1]->GetImage());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

glEnable(GL_TEXTURE_2D);


Citar
   glBegin(GL_QUADS);
  glMultiTexCoord2f(GL_TEXTURE0, 0.0, 0.0);
  glMultiTexCoord2f(GL_TEXTURE1, 0.0, 0.0);
  glVertex3f(-1.5, -1.0f, -5.0);
  glMultiTexCoord2f(GL_TEXTURE0, 1.0, 0.0);
  glMultiTexCoord2f(GL_TEXTURE1, 1.0, 0.0);
  glVertex3f(1.5, -1.0f, -5.0);
  glMultiTexCoord2f(GL_TEXTURE0, 1.0, 1.0);
  glMultiTexCoord2f(GL_TEXTURE1, 1.0, 1.0);
  glVertex3f(1.5, 1.0f, -5.0);
  glMultiTexCoord2f(GL_TEXTURE0, 0.0, 1.0);
  glMultiTexCoord2f(GL_TEXTURE1, 0.0, 1.0);
  glVertex3f(-1.5, 1.0f, -5.0);
   glEnd();


Espero que me hayais entendido.

Fanakito

 Me parece que lo que hace OpenGL por defecto es combinar las texturas con una operacion MODULATE. Por lo que he entendido, ¿tu quieres sobreponer una textura a otra no?

Quizas lo mas facil sea cargar algun tipo de textura con canal alfa y hacer un glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);

Aunque no se si es exactamente lo que buscas...






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.