Open GL - Problema con las texturas de opengl

 
Vista:

Problema con las texturas de opengl

Publicado por CalambreNet (2 intervenciones) el 28/03/2009 11:47:55
Haber si alguien me puede ayudar porque voy a perder la cabeza con este tema:
Estoy construyendo un programa para instalarlo en un carpc (poner un ordenador pequeño en un coche y manejar lo desde la guantera con una pantalla táctil, como si fuera un radio o un gps).Este programa lo estoy haciendo usando opengl y ejecutado desde Linux, por diversos motivos que no vienen al caso. Resulta que cuando lanzo el programa usando las librerías MesaGL (sin usar aceleracion por hardware), todo se ve que te “cagas” pero va muy lento, es de esperar al no usar la gráfica. Pero cuando se ejecuta usando los controladores de la gráfica, una ati x700, va muy rápido todo pero las texturas de los botones (2d) se ven pixelados, es como si se cargaran a una resolución mas baja de lo que están hechos. Si le aplicas filtrado se ve sin pixelar pero sigue si usar la resolución original. En cambio cuando usa MESAGL si se dibujan con su correspondiente resolución. Esto es muy raro. Es como si cuando usa el hardware las imágenes no se cargan a su resolución. No se si el problema es de OpenGL o es de DevIl (las librerías que uso para cargar las imágnes). Este es el código para cargarlas:

bool Cuadro_Textura::Inicia(string nombref,unsigned int ancho,unsigned int largo)
{
#ifdef DEBUG
cout<<"-- Cargando textura: "<<nombref<<"...";
#endif

this->Ancho = ancho;
this->Largo = largo;
ilInit(); //iniciación de DevIL

ilGenImages(1, &iltexture);
glGenTextures(1, &gltexture);
ilBindImage(iltexture);
glBindTexture( GL_TEXTURE_2D, gltexture);
if (ilLoadImage(nombref.data()))
{
if(ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE))
{
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH),ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,ilGetData());
}
else
return false;
}
else
{
cout<<"- Error: El fichero no se encuentra"<<endl;
return false;
}

cout<<" OK"<<endl;

ilDeleteImages(1, &iltexture);
return true;
}

Haber si alguien me puede ayudar. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con las texturas de opengl

Publicado por calambrenet (2 intervenciones) el 28/03/2009 13:10:42
Ya lo he solucionado aunque no estoy muy seguro de qué significa lo que he hecho. Mirando por internet he encontrado una opción para glTextParameteri que es GL_CLAMP. Añadiendo estas dos lineas:

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );

Y funciona de vicio, se ve como tiene que verse. Investigaré haber si encuentro una explicacion clara.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con las texturas de opengl

Publicado por killito3333 (3 intervenciones) el 09/05/2009 17:58:37
Es casi seguro que es un problema de los drivers de ati, metete en los menus del driver de la carjeta grafica y desactiva la opcion de filtro trilinear, o bien busca la opcion del mipmapin y ponlo a 0 o vete canbiandolo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar