Avances, Diario de...

Started by SplinterGU, April 17, 2008, 03:00:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

Básicamente es que al hacer un write_in_map en modo 32 bits no escribe bien los colores.

set_mode(320,240,32);
f = ttf_loadx("C:\Windows\fonts\vladimir.ttf",40,32,rgba(255,255,255,255),rgba(255,255,255,0),0);
map_clear(0,0,rgb(0,255,0));
drawing_map(0,graph);
drawing_color(rgb(255,0,0));
draw_box(100,100,200,200); // Borramos con rojo el grafico
graph = write_in_map(f,"HELLO WORLD",0); // escribimos hello world en blanco

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

#736
ya hable con sandman... la cosa es que cuando dibujas sobre un grafico de 32 bits, el alpha de los pixels dibujados es 255... y eso tiene que ser asi... la conclusion que llegamos es que necesitamos tener un flag para poder modificar ese comportamiento... (pero no lo hare ahora)

una solucion es poner text_flags = B_NOCOLORKEY; pero justo con el font que sandman esta probando da problemas ya que cada caracter si pisa sobre el anterior, entonces se corta parte del grafico... pero en un font normal (no italico) o italico con un espaciado mas amplio funcionaria correctamente.

el por que de alpha a 255 en el mapa destino tiene un porque... y es algo un poco largo de explicar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Me ocurrió algo relacionado en un juego que hice... Todavía no lo había comentado pero quizás sea ahora el momento:

En ese juego disparaba a un objeto con una ametralladora y quería que el objeto se agujerease con las balas (Agujeros transparentes). Para ello hice un map_block_copy y no conseguí poder dibujar un círculo con su alpha correcto para los bordes... Así que terminé dibujando cuadrados negros que trabajando en 16 bits hacían la vez de alpha.

Pero me quedé con las ganas de poder hacerlo en 32, los agujeritos totalmente redondos hubiesen sido muy graciosos.

Me alegro que esté en la lista de tareas pendientes Splinter. Esperaremos con paciencia :D
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

Splinter porfa la snapshot de la r107 que me prometiste :) Que quiero programar en Bennu todo el Sabado.

Windgate

Con las DLL de la última RC me dejaron de funcionar los juegos en 3D... No sé qué pasó, si sale nueva RC sustituyo DLLs a ver qué es... Ya lo reporté con captura del error pero nadie me dijo nada al respecto :'(
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

#740
subida rc10 revision 110...

por favor, "difundid la palabra..." :D

PD:
les debo el instalador windows, solo esta el rar... lo siento, pero el ultimo upgrade de mingw32 para linux esta cagado... no entiendo por que meten mano y hacen cagadas que no arreglan en varias versiones de mingw que estan saliendo en el toolchains de linux...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

La momia que fuma

Quote from: Windgate on October 16, 2009, 08:26:42 PM
En ese juego disparaba a un objeto con una ametralladora y quería que el objeto se agujerease con las balas (Agujeros transparentes). Para ello hice un map_block_copy y no conseguí poder dibujar un círculo con su alpha correcto para los bordes... Así que terminé dibujando cuadrados negros que trabajando en 16 bits hacían la vez de alpha.

Para eso lo que puedes hacer es (a ver si me doy explicado bien), tener un gráfico aparte con el agujero, irlo recorriendo con map_get_pixel, y donde encuentres el color que le hayas puesto al agujero, meter un pixel transparente en el gráfico a agujerear con map_put_pixel teniendo en cuenta la referencia que acabas de obtener en el gráfico del agujero y en que coordenadas del gráfico vas a meter el bujero

Usé el truco este hace mucho (DIV1) para un remake que había hecho del mitico gorilla del Qbasic, que causaba furor por aquel entonces en las clases de informática de mi instituto XD

Sin embargo este método sería demasiado lento para cumplir mi viejo anhelo de meter en un juego la siempre encantadoramente hortera cortinilla de estrellas (vease el capitulo de los simpson en el que la palma la mujer de Flanders) para cambiar de escena XD

Drumpi

¿Y que tal las funciones draw? permiten pintar en color transparente, y no se si en modo 32 bits o con alguna variable incluso con alphas distintas.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

La momia que fuma

También es verdad, mucho mejor que lo que decía yo, aunque sigue siendo complicado hacer una cortinilla de estrellas XD

SplinterGU

el problema es que actualmente si uno dibuja sobre un grafico de 32 bits, el alpha del grafico destino es 255... a menos que usemos b_nocolorkey... pero al hacer eso, las areas negras se copian...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Ya, pero pensaba que como el color es rgbA ya se incluía el valor del alpha para cada pixel en el destino.
Y la cortinilla de estrellas, es posible hacerla con las lineas, sólo debes definir a cada frame la posición de los 10 vértices y dibujar las lineas correspondientes (aunque creo que dejan algunos huecos por los redondeos).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Ok, probaré lo que dices Momia a ver qué tal queda, me dolió no poder dejar el juego terminado como quería :'(

Los problemas que estamos hablando con los 32 bits supongo que serán a causa de que todavía no hemos testeado a fondo los videojuegos con esta profundidad de color. Imagino que a base de darles caña y reportar posibles fallos se irán arreglando, al fin y al cabo sólo es añadir A a las ya existentes R G y B... Con los flags que comentaba Splinter para transparencia aditiva, sustractiva y esas cosas que tiene el color se debería poder hacer "cualquier" cosa.

Drumpi, el trazado de líneas no tiene "suavizado" (No tiene alpha, vamos) y cuando lo probé en mi visor 3D para el wireframe sí que salía algún hueco.

¿Hay algo pensado para primitivas de dibujo en 32 bits? Simple curiosidad, hay otras cosas más importantes ;)
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

No, no tiene suavizado, pero cada color en 32bits si que lo tiene, ya que se usan 8 para la componente roja, 8 para la verde, 8 para la azul y 8 para el ALPHA, por lo que un color hFFFFFFF0 debería ser un color blanco con transparecia al 50%
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

las primitivas graficas de 32 bits estan soportadas
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

las primitivas graficas de 32 bits estan soportadas

Sí, eso ya me imaginaba, que es posible dibujar una línea con cierto alpha, de hecho lo probé con mi visor 3D.

Lo que quería saber es si era posible trazar la línea con suavizado, de forma que las diagonales no muestren "escalones", para ello la línea añade algunos píxeles con transparencia extra en los "escalones" y da mayor sensación de diagonal.

¿Eso no está, verdad? Tampoco lo hecho en falta, es por curiosidad y por conocer bien lo que hay y lo que no hay.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es