Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: ALRAZ en 25 de Junio de 2006, 09:14:15 PM

Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 25 de Junio de 2006, 09:14:15 PM
Wenas...

Una pregunta de Newbie OpenGLero:
:idea: Es posible "paletizar" las texturas de OpenGL?

es decir, tener una textura con paleta de 8 bits y variar esa paleta de vez en cuando para dar efectos chulos a unas cuantas gráficas.

Es posible?
Título: Texturas con paleta en OpenGL?
Publicado por: marcode en 28 de Junio de 2006, 06:38:21 PM
Quizás puedas con glColorTableEXT, aunque al no formar parte del standard puede darte algún problema.
Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 29 de Junio de 2006, 12:17:19 AM
Cita de: "marcode"Quizás puedas con glColorTableEXT, aunque al no formar parte del standard puede darte algún problema.

Creo haber leido algo sobre paletas de colores de 8, 16 y 24 bits, pero hay 2 problemas:
1: no recuerdo donde lo leí
2: menos recuerdo como funcionaba (o para qué servía)
Título: Texturas con paleta en OpenGL?
Publicado por: marcode en 29 de Junio de 2006, 12:34:34 AM
Pues que yo sepa solo vale para ahorrar memoria, y para hacer el efecto de cambio de colores que da la sensación de que se desplazan (seguro que tiene algún nombre).

si estás empezando con opengl no te será fácil, pero si te animas puedes empezar por aquí:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_83n8.asp
Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 29 de Junio de 2006, 11:07:36 AM
Cita de: "marcode"Pues que yo sepa solo vale para ahorrar memoria, y para hacer el efecto de cambio de colores que da la sensación de que se desplazan (seguro que tiene algún nombre).

si estás empezando con opengl no te será fácil, pero si te animas puedes empezar por aquí:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_83n8.asp

Muchas gracias Marcode. Creo que es exactamente lo que necesito.
Deja ver si he captado la idea de como funciona esto:

-Creo las texturas con glTexImage2D pasándole GL_COLOR_INDEX en el parámetro format (ante-penúltimo parámetro según leo)
-En pixels (último parámetro) le doy los pixeles indexados.
-Cuando quiera cambiar la paleta de esa textura, llamo glBindTexture para activarla
-Luego glColorTableEXT, pasándole la nueva paleta de colores como último parámetro.

Espero haber entendido bien  :roll:
Título: Texturas con paleta en OpenGL?
Publicado por: ethernet en 29 de Junio de 2006, 12:40:18 PM
ALRAZ: en este foro tenemos la norma no escrita que cuando alguien pregunta por algo y le ayudamos, nos pone unas imágenes de lo que está haciendo .. :P pega alguna grafiquilla hombre!
Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 29 de Junio de 2006, 06:14:01 PM
Cita de: "ethernet"ALRAZ: en este foro tenemos la norma no escrita que cuando alguien pregunta por algo y le ayudamos, nos pone unas imágenes de lo que está haciendo .. :P pega alguna grafiquilla hombre!

:o
mil disculpas. Mía culpa.

mmmm...
donde puedo subir imágnes?

de cualquier modo, lo único que estoy haciendo hasta ahora es un morticillo gacho para un juego de Megaman / Rockman.

Lo que pretendo lograr son los cambios de color del personaje cuando cambias de arma.

En cuanto pueda poner imágenes lo haré ;)
Título: Texturas con paleta en OpenGL?
Publicado por: Pablo Zurita en 29 de Junio de 2006, 08:37:09 PM
Ya no se usan las paletted textures, hay varias razones y Mark Kilgard de Nvidia lo dice en este post http://www.opengl.org/discussion_boards/ubb/ultimatebb.php?ubb=get_topic;f=3;t=012877. Y si miras la especificación de EXT_paletted_texture (http://oss.sgi.com/projects/ogl-sample/registry/EXT/paletted_texture.txt) podes ver lo mismo.
Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 29 de Junio de 2006, 11:51:03 PM
Cita de: "Pablo Zurita"Ya no se usan las paletted textures, hay varias razones y Mark Kilgard de Nvidia lo dice en este post http://www.opengl.org/discussion_boards/ubb/ultimatebb.php?ubb=get_topic;f=3;t=012877. Y si miras la especificación de EXT_paletted_texture (http://oss.sgi.com/projects/ogl-sample/registry/EXT/paletted_texture.txt) podes ver lo mismo.

algo de eso había escuchado...
mmm...

tendría que cambiar directamente los pixeles de la textura entonces?
creo que tomaría demasiado teimpo para texturas muy grandes...  :roll:
o para varias texturas
Título: Texturas con paleta en OpenGL?
Publicado por: marcode en 30 de Junio de 2006, 05:08:53 PM
Prueba con el mapeado de color, no sé si te servirá exactamente para lo que buscas pero puedes conseguir efectos interesantes, este ejemplo mapea los colores para producir una imagen en negativo.


GLfloat Map[256];
for(int i=0; i<256; i++)
Map[i] = 1.0f - (1.0f / 255.0f * (GLfloat)i);
                     
glPixelMapfv(GL_PIXEL_MAP_R_TO_R, 255, Map);
glPixelMapfv(GL_PIXEL_MAP_G_TO_G, 255, Map);
glPixelMapfv(GL_PIXEL_MAP_B_TO_B, 255, Map);
glPixelTransferi(GL_MAP_COLOR, GL_TRUE);



Esto sí forma parte de la API de OpenGL por lo que no tendrás ningún problema en usarlo.
Título: Texturas con paleta en OpenGL?
Publicado por: ALRAZ en 30 de Junio de 2006, 08:13:05 PM
Gracias por el código marcode. Trataré de probarlo en estos días.

Mientras, y como lo prometido es deuda, aquí muestro unas fotitos de lo que estoy haciendo (o tratando de hacer XD).

(http://alraz.exe.googlepages.com/S1.png)
No hay que perder de vista al personaje que está justo en el centro de la ventana. Los demás son sólo para porbar las "capacidades" del motor (o falta de las mismas, da igual XD)

(http://alraz.exe.googlepages.com/S2.png)
Explico el "efecto" que intento lograr. Si alguien ha jugado alguna vez un juego de estos, sabrá que al eliminar al jefe de cada escena se obtiene un arma que representa a dicho jefe. Cuando el jugador intenta usar una de estas armas, los colores del personaje principal cambian. El azul oscuro se vuelve blanco, el azul claro se vuelve verde y cosas así.

(http://alraz.exe.googlepages.com/S3.png)

También se puede ver dicho "efecto" en los juegos de lucha: cuando ambos jugadores escogen el mismo personaje, uno de ellos lo obtiene con una paleta de colores distinta.

(http://alraz.exe.googlepages.com/S4.png)