Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Loover en 30 de Noviembre de 2002, 05:15:37 PM

Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 30 de Noviembre de 2002, 05:15:37 PM
                                ¿Hay alguna forma de transformar una textura de formato RGB a RGBA? Digo la textura, no la imagen en memoria (supongamos que una vez creada la textura hemos liberado de memoria la imagen original)

Lo pregunto para OpenGL

Y lo necesito para hacer un glTexSubImage2D entre dos texturas cualesquiera, puesto que no funciona entre dos con distinto tipo... tendre que pasar la RGB a RGBA (o viceversa).                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Degiik en 30 de Noviembre de 2002, 07:25:20 PM
                                Creo que No hay ninguna forma, puesto que de una texturas tienes el numero que la referencia y no el puntero de memoria hacia ella. Y no me suena ninguna api de OpenGL que transforma un tipo de textura a otro. :?:

Saludos. :D                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 30 de Noviembre de 2002, 10:13:00 PM
                                sabía que la respuesta iba a ser esa :( buaaaaaa                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Vanch en 30 de Noviembre de 2002, 11:26:57 PM
                                Pero por que llegas a ese punto ? puedes tener la imagen en memoria con un puntero. En un post mas abajo... http://www.stratos-ad.com/forums2/viewtopic.php?t=1033 ... tienes una funcion hice el otro dia para añair el valor Alpha. No se cual sera tu caso, pero leer otra vez del HD y con esa función lo cambias. O bien ya desde el principio puedes tener la textura con RGBA. Supongo que dependera de tu proyecto.

Suerte  :P                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 01 de Diciembre de 2002, 01:20:03 AM
                                Por eso decía lo de que la imagen original ya no estaba en memoria. No pienso tener para cada textura la imagen en memoria (madre mia, obligaria a comprarse a la gente 1024 de ram, :P ) En cuanto cargo la textura, la elimino. Y lo de tenerlas todas en RGBA, es como lo hago ya mismo... pero había pensado tenerlas en RGB (y por lo tanto ocupando menos) y pasarlas a RGBA solo cuando fuera necesario.

Al final he decidido que la libreria 2d que estoy programando haga esto (decirme que os parece):
Que te permita cargar las imagenes y guardarlas de tres formas diferentes:
LOV_OPAQUE => Se guardaran en modo RGB
LOV_SPRITE => Se guardaran en modo RGBA (pero al renderizarlas no se usará blend, sino alpha test al color seleccionado como color key)
LOV_ALPHA => RGBA y se renderizarán usando blending

Usaré tres listas: primero renderizaré las dos primeras (OPAQUE y SPRITE) con el depth test activado. Luego pondre el depth test en modo "read-only" y pasare a ordenar la tercera lista (ALPHA) para dibujar primero las mas alejadas (sino el blending no se realizaría correctamente) y a renderizarlas.

Las funciones de retoque entre imágenes (por ejemplo recortar un trozo de imagen y ponerlo en otra) sólo se podran hacer entre tipos iguales (aquí es donde me joroba que no se pueda cambiar de RGB a RGBA). Pero bueno, no es tan grave.

Voy al tema :D

Vanch... ¿Eres Degiik?                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Degiik en 01 de Diciembre de 2002, 11:09:08 AM
                                " Vanch... ¿Eres Degiik? "

Si soy Degiik, me explico, Vanch es mi hermano pequeño. Cuando me dejo el ordenador, me olvide de hacer un logout. Sorry  :!:  :!:  :!:                                
Título: RGB to RGBA en texturas en OGL
Publicado por: ethernet en 01 de Diciembre de 2002, 01:15:41 PM
No entiendo muy bien por q no le pasas a opengl la textura en rgba y despues usas el alpha o no en funcion de tus necesidades.

saludos
Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 01 de Diciembre de 2002, 01:40:44 PM
                                Para ahorrar un mísero byte por cada pixel, :D
Si es de tipo LOV_OPAQUE, sabré que NUNCA necesitará canal alpha. Y un byte menos por pixel... pues algo es algo.
No sé, no sé... las LOV_OPAQUE las utilizarían (sino llevan transparencia) sobre todo para fondos... y scrolles tochos... por lo que un byte menos puede significar mucho ahorro. 1/4 menos exactamente :)                                
Título: RGB to RGBA en texturas en OGL
Publicado por: ethernet en 01 de Diciembre de 2002, 04:17:54 PM
Sera un byte en el caso de q el formato sea de 32 bits. De todas maneras mirate los formatos internos q soporta opengl, yo creo q no merece la pena ahorrarse unos bits y despues tener q hacer transformaciones a pelo. Si encuentras una funcion q lo haga vale, pero si no.. :_(

saludos
Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 01 de Diciembre de 2002, 04:51:41 PM
                                No, relee el post de más arriba. ¿Que transformaciones a pelo? El usuario de la libreria decidirá que tipo de imagen (independientemente de que sea jpeg, bmp, png, tiff, lo que sea) será. (LOV_OPAQUE, LOV_SPRITE, LOV_ALPHA). Y una vez cargada la imagen ya esta, ya no hay más transformaciones.
Ejemplo: si el usuario carga un tga (BGRA) y le mete como parámetro LOV_OPAQUE. Yo lo pasaré (esto ya esta hecho) a RGB (adios al alpha, saldra negro).
Si quiere sinembargo que se respete el canal alfalfa, pues usará LOV_ALPHA (RGBA).
Los LOV_SPRITE por su parte se almacenan como RGBA, y los pixeles transparentes tendra valor alpha 0 y el resto 255 y NO USARE BLENDING, sino ALPHA TEST, pues no hay degradado de transparencia, sino colorkey. (alpha test tiene un coste bastante menor que el blending).

Bueno, sigo con le tema                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Ithaqua en 02 de Diciembre de 2002, 07:45:30 PM
                                Lo que no entiendo es lo de pasar de una textura a otra, glTexSubImage2D no pasa de una textura a otra.                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Ithaqua en 02 de Diciembre de 2002, 07:46:48 PM
                                Y otra cosa, ahorrar no creo que ahorres porque aunque una textura sea RGB, internamente se almacena en 32 bits.                                
Título: RGB to RGBA en texturas en OGL
Publicado por: Loover en 02 de Diciembre de 2002, 08:11:03 PM
                                Eso es lo que digo. Que glTexSubImage NO PASA DE UNA TEXTURA A OTRA :( si una esta en RGB y otra en RGBA, hay que joderse.
Y oye! no sabia lo de que internamente lo guardara asi. Usare entonces RGBA y punto.

PD: os recomiendo OpenIL para cargar formatos gráficos. Una maravilla de libreria