Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con texturas png usando OPENGL

Iniciado por javiel, 05 de Octubre de 2007, 05:51:38 PM

« anterior - próximo »

javiel

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:



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
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Tei

¿Puede tener algo que ver con el valor por defecto de ALPHA_TEST?
glDisable( GL_ALPHA_TEST )

Pogacha

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.

tamat

solo por curiosidad, con qué cargas PNG? yo uso OpenIL pero es por saber alternativas.
Por un stratos menos tenso

javiel

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

saludos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Pogacha

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!

javiel

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
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Pogacha


Mars Attacks

Me ha encantado eso de que el bueno es el que se ve mal XD

javiel

dije que iba a responder el mates de la semana pasada y se me ha pasado ;-)

perfecto, era exactamente eso, muchas graciassssss
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

Pogacha


Loover

¿Un juego 2d con gráficos 3d prerrenderizados? ¿Puedes poner alguna capturilla? ¡Me molan esos pies! :D
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






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.