Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: javiel en 05 de Octubre de 2007, 05:51:38 PM

Título: Problema con texturas png usando OPENGL
Publicado por: javiel en 05 de Octubre de 2007, 05:51:38 PM
Hola a todos:

Estamos realizando un pequeño videojuego en 2D y estamos usando OpenGL. Usamos png para todas las imágenes y el problema es q en algunos ordenadores la transparencia en PNG no sale bien. Adjunto una imagen para que podáis verlo mejor:

(http://www.javielinux.com/transp.jpg)

A la derecha la que se ve mal por supuesto. Es la sombra del personaje y se ve así, como si en todas los pixel con alpha se colocaran al 50% de transparencia.

Lo raro es que pasa en algunos ordenadores. El código que uso para cargar las texturas es el siguiente:


glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D , texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glPixelStorei(GL_UNPACK_ROW_LENGTH, surf->pitch / surf->format->BytesPerPixel);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB10_A2, surf->w, surf->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surf->pixels);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);


¿alquien me puede dar alguna idea? ¿puede ser por problemas con la tarjeta de video y opengl?

gracias
Título: Re: Problema con texturas png usando OPENGL
Publicado por: Tei en 05 de Octubre de 2007, 06:26:08 PM
¿Puede tener algo que ver con el valor por defecto de ALPHA_TEST?
glDisable( GL_ALPHA_TEST )
Título: Problema con texturas png usando OPENGL
Publicado por: Pogacha en 05 de Octubre de 2007, 06:39:51 PM
Aca le estas diciendo que use 10 bits para los colores y solo 2 bits para la transparencia, lo cual es solo cuatro tonalidades de transparencia.
GL_RGB10_A2

Cambialo por
GL_RGBA8

Saludos!

PD: En la mayoria de las placas el RGB10_A2 no esta disponible por eso es que te anda bien en algunas, pues te lo suplanta con un modo que si funcione, pero donde esta andando bien es en donde te toma el RGB10_A2.
Título: Problema con texturas png usando OPENGL
Publicado por: tamat en 05 de Octubre de 2007, 08:35:05 PM
solo por curiosidad, con qué cargas PNG? yo uso OpenIL pero es por saber alternativas.
Título: Problema con texturas png usando OPENGL
Publicado por: javiel en 05 de Octubre de 2007, 08:40:09 PM
Probaré el GL_RGBA8 con el ordenador que no funciona, aunque tendré que esperar lo menos al martes. Espero que funcione

Para cargar el PNG, estoy usando SDL y después creo la textura para OpenGL. Aquí tengo algún ejemplo por si te interesa (http://www.javielinux.com/programacion_gl.php)

saludos
Título: Problema con texturas png usando OPENGL
Publicado por: Pogacha en 06 de Octubre de 2007, 03:43:55 AM
Cita de: "javiel"Probaré el GL_RGBA8 con el ordenador que no funciona, aunque tendré que esperar lo menos al martes. Espero que funcione

Hagamos una apuesta entonces!

En realidad estas poniendo mal la ficha. En eso estoy seguro!
Cuando pones GL_RGB10_A2 estas diciendo que tome de 32 bits que representarian el pixel 10 para el Rojo, 10 para el verde, 10 para el azul y tan solo 2 para el canal alpha el cual utilizas luego para la transparencia.
O sea valores de 0 a 1023 para cada canal de color y de 0 a 3 para el canal alpha, o sea 4 tonos de transparencia.

El GL_RGBA8 manda 8 bits para cada canal. Con lo que tenes valores de 0 a 255 para cada color y lo mismo para el canal alpha.

El modo GL_RGB10_A2 solo esta disponible en algunas placas de video, en otras no lo esta y entonces cuando le pides a OpenGL que use esta la suplanta con una que tenga como puede ser GL_RGBA8.

La compu de tu casa no la soporta por eso es que en tu casa anda bien, pero en una placa que si esta disponible vas a ver lo que en realidad le estas pidiendo que pase, 4 tonalidades de transparencia.

Saludos!
Título: ....
Publicado por: javiel en 06 de Octubre de 2007, 06:00:31 PM
Entonces en mi ordenador funciona bien pq es la tarjeta es peor. Que cosas

La verdad que te lo has currado, me has convencido y estoy seguro que será por eso. Tengoque estudiar más opengl, algunas veces hago cosas que no están bien ;-)

saludos y muchas gracias, ya te contaré el martes
Título: Problema con texturas png usando OPENGL
Publicado por: Pogacha en 06 de Octubre de 2007, 06:28:29 PM
OK, toda la suerte que vas bien!
Título: Problema con texturas png usando OPENGL
Publicado por: Mars Attacks en 06 de Octubre de 2007, 07:03:35 PM
Me ha encantado eso de que el bueno es el que se ve mal XD
Título: ...
Publicado por: javiel en 15 de Octubre de 2007, 05:34:33 PM
dije que iba a responder el mates de la semana pasada y se me ha pasado ;-)

perfecto, era exactamente eso, muchas graciassssss
Título: Problema con texturas png usando OPENGL
Publicado por: Pogacha en 15 de Octubre de 2007, 07:02:52 PM
Me alegro entonces!
Título: Problema con texturas png usando OPENGL
Publicado por: Loover en 15 de Octubre de 2007, 08:43:12 PM
¿Un juego 2d con gráficos 3d prerrenderizados? ¿Puedes poner alguna capturilla? ¡Me molan esos pies! :D