Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problemas en lectura de texturas dentro de los shader (SLGL)

Iniciado por Licantropo23, 12 de Marzo de 2007, 01:11:34 PM

« anterior - próximo »

Licantropo23

Hola, tengo un problema a la hora de usar los fragment shader. El problema es que tengo varias texturas de entrada, pero el shader confunde la lectura de las texturas. Tengo dos texturas y de una de ellas me lee bien, pero en la segunda me lee de la primera. Supongo que es un problema de los manejadores que uso para las texturas.

El codigo del shader es el siguiente:


#version 110

uniform samplerRect texposicion;
uniform samplerRect texvelocidad;
uniform float epsilon;

void main(){
 

 vec4 posicion1 = textureRect(texposicion,vec2(gl_TexCoord[0].s,0.5));
 vec4 velocidad1 = textureRect(texvelocidad,vec2(gl_TexCoord[0].s,0.5));
vec4  posicion2 = textureRect(texposicion,vec2(gl_TexCoord[0].t,0.5));
 vec4 velocidad2 = textureRect(texvelocidad,vec2(gl_TexCoord[0].t,0.5));
   vec4 colision;
  /*Calulos: uso las posiciones y velocidades y en colision guardo la normal de colision y el tiempo de colision
  .....
  */
  gl_FragData[0]=colision;
}



Como digo la textura de posicion me la lee bien, pero la de velocidad me la lee como si fuese la de posicion.

El codigo que tengo para prepar la llamada del shader es:


/*******************************
*Se preparan las texturas de entrada*
********************************/  

programa->use();

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texturaPosicion->getId());
GLuint manejador= programa->getUniformLocation("texposicion");
programa->sendUniform(manejador,0);


glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texturaVelocidad->getId());
manejador= programa->getUniformLocation("texvelocidad");
programa->sendUniform(manejador,1);

/*A continuacion se prepararian las texturas de salida
...
*/

//Generador del flujo, para usar shader
glBegin(GL_QUADS);
       glTexCoord2f(0,0); glVertex2f(0,0);
       glTexCoord2f(ancho,0); glVertex2f(ancho,0);
       glTexCoord2f(ancho,alto); glVertex2f(ancho,alto);
       glTexCoord2f(0,alto); glVertex2f(0,alto);

glEnd();

programa->disable();



El problema yo creo que esta en esta parte de aqui:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texturaPosicion->getId());
GLuint manejador= programa->getUniformLocation("texposicion");
programa->sendUniform(manejador,0);

Pero lo que no se es el que.

Muchas gracias. Hasta luego.






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.