Buenas,
En primer lugar me gustaria comentar que me sorprendio gratamente la posibilidad en Bennu de poner un juego con graficos de 8 bits a una profundidad de color de 16 bits. Creo que otros no pueden decir lo mismo.
En mi caso uso masivamente la funcion coverte_palette y por ello no los cambio a 16 bits. Aunque los graficos sigan siendo de pocos colores los fades y las transparencias mejoraron notablemente al poner color 16 bits al llamar al set_mode.
El caso es que he pensado que si yo hago un set_mode a 16 bit de color, y mis graficos de 8 bit se ven perfectamente... No sera posible combinar en un mismo cuadro graficos de 8 bit y graficos de 16 bit?
no entiendo bien tu ultima pregunta... pero los graficos de 8 bits en el modo de pantalla de 16bits, tienen cada uno su propia paleta... e incluso podes asignarle a cada uno otra paleta diferente o compartir paletas entre si... podes tambien usar graficos de 16 y 8 en el modo de video 16bits... no se si eso responde tu pregunta...
o incluso asignar paletas a los procesos con graficos de 8 bits...
te recomiendo ver este ejemplo http://betatester.bennugd.org/snapshot/samples/palettes.rar
NOTA ADICIONAL: Parece que esta funcionalidad de paletas y de mezclar graficos de diferentes profundidades se perdera para el motor opengl... segun parece no se pueden mezclar graficos de diferentes profundidades... todos tienen que ser de la misma... o por lo menos no logro hacerlo funcionar todavia, y no encontre ejemplos que usen graficos de diferentes profundidades en opengl...
Si, responde a mi pregunta. Y ademas me alegra bastante saber todas las posibilidades que tiene. :)
a mi me entristece lo del opengl....
ánimo splinter, que es muy bueno tener gráficos de varias profundidades y tener varias paletas también... se que encontrarás alguna forma de solucionarlo
por eso lo tengo parado un poco... y por eso sandman tambien paro el sangine... el tenia el mismo problema.
http://www.downarchive.com/dl/Beginning+OpenGL+Game+Programming,+Second+Edition+++Beginning+OpenGL+Game+Programming.html
El primero es un libro muy bueno que tambien tiene una sección que habla de la profundidad de color en programación con Open GL.
gracias!
me podrias pasar el link directo, no me sale bien la pagina, el 2do que veo es del C#, no de opengl...
gracias!
Bueno, parece que era motor de busqueda que ellos tienen, ya lo he cerrado, dejame buscar a ver si me sale otra página que no la guarde.
Por cierto el libro es uno de estos, a ver si alguien descubre un link para bajar los 4:
http://glbook.gamedev.net/
Aunque no es el mismo link de la primera página que puse, creo que es este el libro:
http://rapidshare.com/files/208465011/OpenGL_Programming_Guide.rar
Edito, el primer link era este:
http://www.downarchive.com/ebooks/92704-beginning-game-audio-programming.html
gracias!
Aprovecho para comentar un problema que tengo, he estado probando varios demos de DIV que simulan fuego, y lo curioso es que el fuego en todos ellos me sale azul, me imagino que en DIV seria rojo, por otra parte probando la ddl fire.dll de bennu, el fuego casualmente tambien es azul!
Tengo un ejemplo en que incluso dandole a un boton podemos cambiar el color del fuego (amarillo, rosa, etc.) usando get_pixel, pero en bennu por más que cambie su color, este sigue siendo azul, no cambia.
Os pongo la paleta usada a ver si sabeis a que es debido, no será por incompatibilidad o algo de paletas ?
Por otra parte, con que programa mirais las palettas ?
Nadie se anima ?!
Me confirmais que en Fenix el fuego del ejemplo de la dll mod_fire, tambien es azul ?
(http://forum.bennugd.org/index.php?action=dlattach;topic=1228.0;attach=952)
ya que decis eso, entonces se me ocurre que es porque no se setea el flag de cambio de grafico, por eso mismo no se muestran los otros graficos...
Si pero son 2 casos distintos que tienen el mismo color azul. Por un lado esta la dll fire, que sólo enseña un tipo de fuego, y este sale azul.
Y por otro, estan los ejemplos de Div, que no utilizan dll's, y el fuego tambien sale azul.
Posiblemente exista un bug en Bennu, ya nos contarás. Yo sólo dentro de horas podré mirarlo mejor.
Yo, cuando era más mugenero, allá por el año pum, hice una aplicación para cambiar y/o modificar paletas para los archivos pcx, quizás pueda ayudarte a ver las paletas.
http://www.galeon.com/linaresmugen/utils/paletero107.zip
De todas formas el problema puede ser el siguiente, te encuentres con el modo 8 bits seteado en el prg y uses recursos de 8 bits con diferentes paletas. Bennu, y también fenix, cargan como paleta principal la paleta del primer recurso cargado en memoria y la usan para todos los demás recursos que carge a continuación a no ser que la cambies tu manualmente con las funciones que te proporciona el API de bennu.
este sistema era usado antiguamente mucho, por ejemplo para crear diferentes fases con cambiar la paleta principal cambiabas los colores de todos los recursos y parecías estar en otro lugar. O para generar monstruos de diferentes dificultad uno de cada color, etc.
Quote from: DCelso on April 05, 2010, 01:01:03 PM
Yo, cuando era más mugenero, allá por el año pum, hice una aplicación para cambiar y/o modificar paletas para los archivos pcx, quizás pueda ayudarte a ver las paletas.
http://www.galeon.com/linaresmugen/utils/paletero107.zip
De todas formas el problema puede ser el siguiente, te encuentres con el modo 8 bits seteado en el prg y uses recursos de 8 bits con diferentes paletas. Bennu, y también fenix, cargan como paleta principal la paleta del primer recurso cargado en memoria y la usan para todos los demás recursos que carge a continuación a no ser que la cambies tu manualmente con las funciones que te proporciona el API de bennu.
En Div creo recordar que tambien, se cargaba la div.pal por defecto (tambien la podrias cargar tu logicamente), y se mantenia hasta el final, almenos que cargaras otra despues, no creo que sea el problema, porque el ejemplo Div del que hablo sólo tiene la paleta que he puesto, y apuesto que sale rojo, aparte de que se puede cambiar el color en un boton.
Umn, a ver, ¿puedes adjuntarme un ejemplo funcional en el que pase para analizarlo?, es decir, prg y recursos necesarios.
Luego te lo paso, lo tengo en casa ;D
Pues si siempre sale en azul, tengas la paleta que tengas, tengo una ligera sospecha de donde puede estar el error.
¿Usas el modo 16bits de color, o la dll? porque parece que toma valores entre 0 y 255, y eso, en RGB son todos los colores del azul... o al menos, a la hora de hacer una conversión (la función rgb usa valores entre 0 y 255 en cada uno de sus parámetros, aunque luego devuelva un color rgb565).
Yo empezaría mirando por ahi, alguna incompatibilidad con modos de color.
Hay que dividir 2 cosas:
Caso 1:
La dll que fue compilada para Bennu y que venia de Fenix (mod_fire), o sea, la dll funcionaba en Fenix y no lo hace en Bennu, en este punto ya detectamos inconpatibilidad entre Fenix/Bennu.
No es un problema del port, porque tanto la que yo porte como la del Bennupack sufren exactamente el mismo problema. El primer fuego sale azul, y los otros ni se ven.
Caso 2:
He probado ejemplos de DIV, que han compilado directamente en Bennu, estos ejemplos simulan fuego del mismo modo pero no utilizan ninguna classe de dependencias/dll, es todo por código.
Uno de estos ejemplos crea fuego que tambien sale azul, el otro ejemplo incluso te permite cambiar su color en tiempo de ejecución, pero en Bennu sigue siendo azul, los colores de cambio creo recordar que era amarillo, rosa, entre otros.
quiero ejemplos del caso 1 y del caso 2 para testear, porfa plis
Te pongo uno mejor, y tiene exactamente el mismo problema que comentaba Drumpi (y yo pensando que la demo era de color azul, heheheh).
PROGRAM twirl;
PRIVATE
DIST;
BEGIN
SET_FPS(60,1);
SET_MODE(m640x480);
LOOP
IF(DIST<256)
FROM ANGLE=0 to 360000 step 100;//change the step value
put_pixel(320+get_distx(angle,dist),240+get_disty(angle,dist),DIST);
END
END
DIST++;
FRAME;
END
END
Original:
(http://forum.bennugd.org/index.php?action=dlattach;topic=1269.0;attach=1027)
Bennu:
(http://forum.bennugd.org/index.php?action=dlattach;topic=1269.0;attach=1029)
1) fenix pone por defecto el video en 8bpp, bennu en 16bpp...
2) si en bennu no decis que el grafico cambio (internamente por codigo en la dll), bennu no pierde tiempo en analizar el grafico, por ende no va a dibujarlo, ya que no hace falta.
resumen, no es problema de bennu, es problema del codigo de la dll y de suponer que estamos en un modo cuando estamos en otro.
como te dijo drumpi, si usas valores de 0 a 255 y en uno ves colores diferentes y en el otro ves que te da todo azul, es claro que en uno estas en 8bpp y en el otro no (o en este ultimo tenes una unica paleta de tonos azules).
pero si mal no recuerdo la firedll trabajaba en 8bpp.
Tema resuelto! Ya he coloreado el ejemplo en 8 bits y funciona, tantos días para llegar a la solución ::)
Por cierto, me acabo de enterar que el problema con la mod_fire no es este. Se inicia a 8 bits, el fuego es rojo al principio, estaba azul en la captura porque le cambie la paleta con la demo, pero los otros 3 fuegos no salen. Tendré que ver el motivo.
Edit: Con la mod_fire no importa la profundidad de color que asignes (8,16 o 32), siempre sale con los mismos colores de forma independiente :)
es que siempre tenemos que pensar primero que el error lo estamos teniendo nosotros... y luego de agotar todas las opciones entonces si decir que es un bug de la herramienta, pero eso es algo menos probable... bennu a diferencia de fenix y todo lo demas, esta diseñado, puede tener errores si, pero deben ser pocos, ya que el motor esta hecho a consciencia...
y dar una descripcion correcta del problema es importante para obtener una respuesta rapida... pero bien, con preguntas y contando cosas, hemos llegado a la solucion... me alegro...
Quote from: FreeYourMind on April 05, 2010, 08:01:15 PM
Tema resuelto! Ya he coloreado el ejemplo en 8 bits y funciona, tantos días para llegar a la solución ::)
Por cierto, me acabo de enterar que el problema con la mod_fire no es este. Se inicia a 8 bits, el fuego es rojo al principio, estaba azul en la captura porque le cambie la paleta con la demo, pero los otros 3 fuegos no salen. Tendré que ver el motivo.
Edit: Con la mod_fire no importa la profundidad de color que asignes (8,16 o 32), siempre sale con los mismos colores de forma independiente :)
no salen porque seguro la dll no setea el flag de cambio...
el error esta en el ejemplo de la fire.dll... incluso la fire.dll esta un poquito caotica... ya tengo una nueva version...
Actualiza la version entonces. Grácias.
ya la actualice en el hilo que corresponde.
La pregunta se desvia ligeramente del tema original pero...
He probado a cambiar el color de un grafico con blendop, y ahora me ignora el canal alpha. Aunque baje la variable alpha el grafico se mantiene 100% opaco. Es una limitacion de los blendop o estoy haciendo algo mal?
El grafico es de 8 bits y el modo de 16.
Es una limitación de blendop, siempre puedes modificar la transparencia con blendop_translucency (hablo de memoria, no se si se llamaba asi la funcion exactamente), o a lo burro, modificar el fpg con blendop_apply, con el que modificas gráficamente el fpg de forma que le aplica los cambios del blendop pero sin depender de este, con lo que ya puedes usar alpha o lo que te de la gana sin problemas.
La opción de usar blendop_translucency esta bien para cambios puntuales de alpha, pero tengo la idea (no me hagais mucho caso, corregidme si me equivoco) de que no es muy optimo para casos en los que vas a estar modificando la transparencia a cada frame, como desvanecer un grafico y cosas asi...
Pero si quieres cambiar el color de un gráfico de 8 bits ¿por qué no cambias la paleta? aunque estés en modo 16bits, los gráficos de 8 siguen usando paletas.
SET_COLORS
ROLL_PALETTE
...
O si no, pues trabaja con múltiples paletas, y se la asignas al proceso en cuestión, o al map, o al FPG (el tema de las multi-paletas aun no sé como va).
Si, es lo que tenia originalmente. El SET_COLOR es una funcion genial y se hecha de menos en 16 bit.
Pero en algunos casos es bastante mas trabajo, para que nos vamos a engañar xd. Ademas que el bendop al aprobechar los 16 bit de color me da mas consistencia de color y libertad para eleguir la tonalidad. La transparencia solo aparecia en dos casos puntuales y puede ser sacrificables.